In Redux empfangen, ich folgendes in einem redux-Thunk Aktion Schöpfer ausgeführt wird:Reagieren componentDidUpdate nicht letzte Requisiten
dispatch({type: "CASCADING_PROMPT_STATUS", promptName, list: 'model', status: 'disabled'});
dispatch({type: "CASCADING_PROMPT_STATUS", promptName, list: 'model', status: 'enabled'});
Dieses verkürzte zweimal auslöst, und ich kann in der Konsole, die Redux Zustandsänderungen sehen von deaktiviert -> aktiviert.
In React habe ich die folgende Komponente, die Requisiten mit Status verbunden hat, von denen CASCADING_PROMPT_STATUS aktualisiert.
jedoch in meiner Komponente, ich bin mit einer Überprüfung, ob Staat in componentDidUpdate(prevProps)
Dies löst nicht.
Wenn ich den Aktionsersteller ändern, um den zweiten Versand setTimeout(<dispatch...>, 1);
sogar um eine Millisekunde zu verzögern, prevProps! == this.props, was ich erwarte.
Meine Komponente wird redux verbunden wie so:
const C_Component = connect(mapStateToProps, mapDispatchToProps, null, {pure: false})(Component);
Hat Batch Reagieren auf Änderungen stützen? Warum muss ich den zweiten Versand verzögern? Ich dachte Redux Versand wäre synchron.
Edit: So wie ich die redux Zustand bin Aktualisierung ist wie folgt:
var newState = {};
if (!_.isUndefined(state)){
newState = _.cloneDeep(state);
}
...
case "CASCADING_PROMPT_STATUS":
newState[action.promptName][action.list].disable = action.status === 'disabled';
break;
Wenn React-Aktualisierungen stapelweise vorliegen, gibt es eine Möglichkeit, den Status umzuschalten, ohne den zweiten Versand absichtlich zu verzögern? – tgun926
Ich benutze eigentlich 'shouldComponentUpdate' nicht, ich benutze' componentDidUpdate' - soll ich den ersten verwenden? – tgun926
@ tgun926 Was ist der Vorteil, den Zustand zu mutieren, nur um ihn danach erneut <1 ms zu mutieren? Dies ist für den Benutzer nebenbei unbemerkbar. – trixn