Auf den Redux-Store-Status in Action Creators zugreifen
Beim Erstellen von Aktionen in Redux müssen Sie möglicherweise auf den globalen Store-Status zugreifen. In diesem Artikel werden zwei Ansätze untersucht, um dies zu erreichen: direkter Zugriff auf den Status über eine importierte Speichervariable oder Verwendung einer Redux Thunk-Middleware.
Direkter Zugriff auf den Status
<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>
Dieser Ansatz basiert darauf, dass der Store ein Singleton ist, der aus einem Modul exportiert wird. Obwohl es technisch funktionsfähig ist, wird es nicht empfohlen, da es das serverseitige Rendering erschwert, bei dem für jede Anfrage separate Speicher erforderlich sind.
Verwendung von Redux Thunk
<code class="javascript">export const SOME_ACTION = 'SOME_ACTION'; export function someAction() { return (dispatch, getState) => { const {items} = getState().otherReducer; dispatch(anotherAction(items)); } }</code>
Verwendung von Redux Die Thunk-Middleware ermöglicht den Zugriff auf den Speicherstatus über die getState-Funktion. Dieser Ansatz wird bevorzugt, da er sowohl in Client- als auch in Serverumgebungen nahtlos funktioniert.
Überlegungen
Über die Verwendung von getState in Aktionserstellern gibt es unterschiedliche Meinungen. Einige argumentieren, dass es auf Szenarien beschränkt werden sollte, in denen zwischengespeicherte Daten überprüft oder der Authentifizierungsstatus überprüft wird. Andere behaupten, dass es akzeptabel sei, getState in Thunks zu verwenden.
Letztendlich hängt der beste Ansatz von den spezifischen Anforderungen Ihrer Anwendung ab. Während Aktionen im Idealfall prägnant sein sollten, gibt es Fälle, in denen der Zugriff auf den Status direkt im Aktionsersteller gerechtfertigt sein kann.
Das obige ist der detaillierte Inhalt vonWie greife ich in Action Creators auf den Redux Store-Status zu: Direct vs. Redux Thunk?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!