Heim > Web-Frontend > js-Tutorial > Wie werden Redux-Aktionen mit Zeitüberschreitungen versendet?

Wie werden Redux-Aktionen mit Zeitüberschreitungen versendet?

Linda Hamilton
Freigeben: 2024-12-06 20:10:17
Original
625 Leute haben es durchsucht

How to Dispatch Redux Actions with Timeouts?

Versenden von Redux-Aktionen mit Timeouts

Problem

Angenommen, Sie haben eine Redux-Anwendung, die Benachrichtigungen verwaltet und Meldungen wie Fehler oder informative Warnungen anzeigt. Sie möchten diese Benachrichtigungen nach einer bestimmten Zeit, beispielsweise 5 Sekunden, automatisch schließen.

Lösung: Inline-Async-Code

Der einfachste Ansatz besteht darin, setTimeout direkt zu verwenden:

store.dispatch({ type: 'SHOW_NOTIFICATION', text: 'You logged in.' });
setTimeout(() => {
  store.dispatch({ type: 'HIDE_NOTIFICATION' });
}, 5000);
Nach dem Login kopieren

Lösung: Extrahieren des Async Action Creator

Um Duplikate und Race Conditions zu vermeiden, sollten Sie das Extrahieren einer Aktion in Betracht ziehen Ersteller:

function showNotificationWithTimeout(dispatch, text) {
  const id = nextNotificationId++;
  dispatch(showNotification(id, text));

  setTimeout(() => {
    dispatch(hideNotification(id));
  }, 5000);
}
Nach dem Login kopieren

Dann verwenden Sie es in Komponenten:

showNotificationWithTimeout(this.props.dispatch, 'You just logged in.');
Nach dem Login kopieren

Lösung: Verwendung von Thunk Middleware

Thunk Middleware bietet mehr Flexibilität. Es ermöglicht Ihnen, Funktionen auszulösen, die Aktionen zurückgeben:

export function showNotificationWithTimeout(text) {
  return function (dispatch) {
    const id = nextNotificationId++;
    dispatch(showNotification(id, text));

    setTimeout(() => {
      dispatch(hideNotification(id));
    }, 5000);
  };
}
Nach dem Login kopieren

Sie können dann den Thunk-Aktionsersteller direkt auslösen:

this.props.dispatch(showNotificationWithTimeout('You just logged in.'));
Nach dem Login kopieren

Status in Thunks lesen

Thunks auch ermöglicht es Ihnen, den aktuellen Status des zu lesen Store:

export function showNotificationWithTimeout(text) {
  return function (dispatch, getState) {
    if (!getState().areNotificationsEnabled) {
      return;
    }

    // ...
  };
}
Nach dem Login kopieren

Empfehlungen

Verwenden Sie den einfachsten Ansatz, der Ihren Anforderungen entspricht. Thunks bieten erweiterte Asynchronfunktionen, sind jedoch möglicherweise nicht in allen Fällen erforderlich.

Das obige ist der detaillierte Inhalt vonWie werden Redux-Aktionen mit Zeitüberschreitungen versendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage