Kann mir jemand geben Hinweise, wie man mit reagieren-redux Folgendes zu tun:Wie man auf Zustandänderung in redux reagiert und eine andere Aktion versendet?
Komponente A löst eine Aktion, die den Zustand (async)
(Komponente kein Kind von A)Komponente B aktualisiert muss in der Lage sein, zu erkennen, wenn sich der Status ändert, und eine andere Aktion absetzen.
Mein Problem ist, wenn ich versuche, Aktion 2 in Komponente B zu versenden, der Zustand ist immer noch im Ausgangszustand und es wird nicht aktualisiert.
Ich habe auch versucht Aktion Dispatching 2 in componentWillUpdate jedoch, dass schafft eine Endlosschleife, weil die zweite Aktion aktualisiert auch den Zustand (und auch asynchron)
Dies ist, wie es aussieht, mehr oder weniger:
//----- Component A
class ComponentA extends React.Component {
constructor(props) {
super(props);
this.props.dispatch(loadEvents()); // loadEvents is async and will update state.eventsState
}
}
const mapStateToProps = function (state) {
return {
eventsState: state.eventsState,
};
};
export default connect(mapStateToProps)(ComponentA);
//----- Component B
class ComponentA extends React.Component {
constructor(props) {
super(props);
props.dispatch(getEventUsers(props.eventsState.eventId)); // the eventsState is in initial state here (empty)...where do I call getEventUsers?
}
componentWillUpdate(nextProps) {
nextProps.dispatch(getEventUsers(props.eventsState.eventId)) // Creates an infinite loop, getEventUsers also updates state
}
}
const mapStateToProps = function (state) {
return {
eventsState: state.eventsState,
};
};
export default connect(mapStateToProps)(ComponentA);
Komponente B sollte nur die Zeit berücksichtigen, die zwischen dem Start der Last und der Last vergeht. Es könnte ein Spinner oder nichts (leeres div) zeigen. Selbst wenn Ihr "loadEvents" Reducer synchron ist, gibt es keine Garantie, dass er zuerst gesendet wird. Reaction alone entscheidet, wenn es verschiedene Funktionen wie 'sollComponentUpdate' aufruft und sogar Ihre Komponentenkonstruktoren. – DDS