Maison >interface Web >js tutoriel >Comment les créateurs d'actions Redux doivent-ils accéder à l'état : depuis le magasin ou Thunk ?

Comment les créateurs d'actions Redux doivent-ils accéder à l'état : depuis le magasin ou Thunk ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-21 18:48:29523parcourir

How Should Redux Action Creators Access State: From Store or Thunk?

Accès à l'état Redux dans les créateurs d'action

Question :

Dans une application Redux, comment peut-on accéder à l'état du magasin global à partir d'un créateur d'action ? Les approches suivantes sont-elles appropriées ?

Approche 1 :

<code class="javascript">import store from '../store';

export const SOME_ACTION = 'SOME_ACTION';
export function someAction() {
  return {
    type: SOME_ACTION,
    items: store.getState().otherReducer.items,
  }
}</code>

Approche 2 :

<code class="javascript">export const SOME_ACTION = 'SOME_ACTION';
export function someAction() {
  return (dispatch, getState) => {
    const {items} = getState().otherReducer;

    dispatch(anotherAction(items));
  }
}</code>

Réponse :

L'acceptabilité de l'accès à l'état au sein des créateurs d'action est un sujet de débat au sein de la communauté Redux.

Approche 1 :

L'accès à l'état directement via store.getState() est déconseillé car il repose sur le fait que store soit un singleton global. Sur le serveur, où des magasins distincts peuvent exister par requête, cette approche est problématique.

Approche 2 :

Cette approche est préférée car elle utilise le middleware Redux Thunk, qui permet des actions asynchrones et la récupération de l'état du magasin via getState(). Thunk fonctionne de manière transparente à la fois sur le client et sur le serveur et garantit que l'accès à l'état est isolé de l'action spécifique.

Considérations :

  • Point de vue du créateur Redux : L'accès à l'état dans les créateurs d'action peut masquer l'historique des modifications et est généralement déconseillé.
  • Point de vue du responsable Redux : L'utilisation de getState dans thunks est encouragée car elle exploite une fonctionnalité spécialement conçue pour de tels cas d'utilisation. .

En fin de compte, les deux approches peuvent donner les résultats souhaités, mais l'approche 2 est la meilleure pratique recommandée pour éviter les pièges potentiels et maintenir la cohérence entre les environnements.

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