Zugriff auf den Redux-Status innerhalb von Aktionserstellern
Frage:
Wie geht das in einer Redux-Anwendung? Kann man von einem Aktionsersteller aus auf den globalen Speicherstatus zugreifen? Sind die folgenden Ansätze angemessen?
Ansatz 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>
Ansatz 2:
<code class="javascript">export const SOME_ACTION = 'SOME_ACTION'; export function someAction() { return (dispatch, getState) => { const {items} = getState().otherReducer; dispatch(anotherAction(items)); } }</code>
Antwort:
Die Akzeptanz des Statuszugriffs innerhalb von Aktionserstellern ist ein Diskussionsthema innerhalb der Redux-Community.
Ansatz 1:
Vom direkten Zugriff auf den Status über store.getState() wird abgeraten, da dieser davon abhängt, dass Store ein globaler Singleton ist. Auf dem Server, wo pro Anfrage separate Stores vorhanden sein können, ist dieser Ansatz problematisch.
Ansatz 2:
Dieser Ansatz wird bevorzugt, da er Redux Thunk-Middleware verwendet, die ermöglicht asynchrone Aktionen und das Abrufen des Speicherstatus über getState(). Thunk funktioniert nahtlos sowohl auf dem Client als auch auf dem Server und stellt sicher, dass der Statuszugriff auf die spezifische Aktion beschränkt ist.
Überlegungen:
Letztendlich können beide Ansätze zu den gewünschten Ergebnissen führen, aber Ansatz 2 ist die empfohlene Best Practice, um potenzielle Fallstricke zu vermeiden und die Konsistenz in allen Umgebungen aufrechtzuerhalten.
Das obige ist der detaillierte Inhalt vonWie sollten Redux-Aktionsersteller auf den Status zugreifen: Von Store oder Thunk?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!