Maison >interface Web >js tutoriel >Comment implémenter des actions Redux chronométrées ?

Comment implémenter des actions Redux chronométrées ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-05 02:16:09360parcourir

How to Implement Timed Redux Actions?

Comment envoyer une action Redux avec un délai d'attente ?

Dans Redux, vous pouvez utiliser setTimeout et envoyer une autre action pour renvoyer l'état de notification à son état initial après un certain temps. De cette façon, les notifications disparaissent automatiquement après un intervalle de temps spécifié.

Utilisation de JavaScript en ligne

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

Extraction d'un créateur d'action asynchrone

Si vous rencontrez une duplication de code ou des conditions de concurrence en utilisant l'approche en ligne, envisagez d'extraire une action asynchrone créateur.

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

  setTimeout(() => {
    dispatch(hideNotification(id));
  }, 5000);
}

Utilisation du middleware Thunk

Pour les applications complexes, vous souhaiterez peut-être utiliser le middleware Redux Thunk. Il permet à Redux de reconnaître les fonctions en tant que créateurs d'action et donne accès à dispatch et getState au sein de ces fonctions.

import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';

const store = createStore(
  reducer,
  applyMiddleware(thunk)
);

store.dispatch(showNotificationWithTimeout('You logged in.'));

Lecture de l'état dans Thunks

Au sein des créateurs d'action thunk, vous pouvez utiliser getState pour lire l'état actuel du magasin. Ceci est utile pour distribuer des actions de manière conditionnelle en fonction de l'état actuel.

showNotificationWithTimeout(dispatch, getState) {
  if (!getState().areNotificationsEnabled) {
    return;
  }
  // ... continue with action-dispatching logic
}

N'oubliez pas d'utiliser ces techniques uniquement lorsque cela est nécessaire, car un simple JavaScript en ligne peut suffire dans de nombreux scénarios.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn