Redux - gibt es eine Möglichkeit, access-Speicher Baum in reducer?
In meinem Fall, ich habe einen Shop wie:
{
aa: {...},
bb: cc //the result of computing with aa
}
Ich aktualisieren aa
und bb
zur gleichen Zeit, aber bb
brauchen, um die Letzte Berechnung der aa
.
Hier ist ein code(React.js):
onClick(e) {
const { dispatch, aa, bb } = this.props;
dispatch(updateAa());
dispatch(updateBb(aa)); //can not get the latest computation of aa, it is the last computation..
}
So, ist das bedeuten, dass ich brauche, um aa
im bb
's reducer?
Und Wie kann ich es tun?
Hoffen hilft!, Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere Möglichkeiten, aber es ist schwer zu sagen, welche ist am besten, aufgrund der Unbestimmtheit der code.
props
. In diesem workflowaa
undbb
würde jeder produziert werden, die durch Selektor-Funktionen, anstatt gespeichert in diesem Speicher selbst.aa
undbb
außerhalb dercombineReducers
, so dass es sieht den ganzen Staat, nicht der Staat Gültigkeitsbereich nach unten zuaa
undbb
.updateAa
undupdateBb
, und pass genug info in jeder Aktion, um die Berechnung durchzuführen.nicht verwenden
combineReducers.
Beispiel
ersetzen Sie diesen code
mit
reducer wäre wie
Als David L. Walsh sagte, Sie wahrscheinlich sollte die Struktur der Reduzierstücke in logischer Weise.
ABER Wenn Sie immer noch denken, Sie es brauchen, können Sie einen thunk Middleware.
(https://github.com/gaearon/redux-thunk)
Redux Thunk-middleware ermöglicht es Ihnen zu schreiben action-Macher, die eine Funktion anstelle einer Handlung.
Redux Thunk, bietet Sie einen Weg, um Lesen Sie den aktuellen Stand der Redux-Shop. Zusätzlich zu Versand, es geht auch getState als zweites argument an die Funktion Sie nach Ihrer thunk Aktion creator.
Fragen Sie sich, ob Sie haben, strukturiert Ihre Reduzierstücke richtig. Wenn a und b sind nicht voneinander unabhängig sind, warum sind Sie getrennt Reduzierstücke? Ich würde versuchen, verschmelzen Sie in einem einzigen reducer.