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 :
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!