Ich versuche derzeit zu konzipieren, wie das Versenden einer Aktion in einer Komponente basierend auf einer Datenänderung nach einem Versenden in einer anderen Komponente behandelt wird.
Nehmen Sie dieses Szenario:
dispatch(someAjax)
-> Eigenschaft in Statusaktualisierungen.
Danach benötige ich eine weitere Komponente, die von derselben Eigenschaft abhängig ist, um zu wissen, dass sie aktualisiert wurde, und um eine Aktion basierend auf dem neuen Wert auszulösen.
value.on(change...
Was ist der bevorzugte Weg, um mit dieser Art von Aktion "Kaskadierung" umzugehen, anstatt irgendeine Art von Lösung zu verwenden?
quelle
Sie können Redux
mapStateToProps
undconnect
mit React'scomponentDidUpdate(prevProps, prevState, snapshot)
Hook verwenden.Im Grunde könnte Ihr Code so aussehen:
const mapStateToProps = (state) => ({ specificProperty: state.specificProperty, // any props you need else }); class YourComponent extends React.Component { render() { // render your component } componentDidUpdate(prevProps, prevState, snapshot) { if (prevProps.specificProperty !== this.props.specificProperty) { // Do whatever you want } } } YourComponent = connect(mapStateToProps)(YourComponent);
quelle
nextProps.specificProperty !== this.props.specificProperty
?componentWillUpdate
sollten nicht mehr mit React 16 verwendet werden. GetDerivedStateFromProps ist jetzt der empfohlene Ansatz.getDerivedStateFromProps
wenn Sie einen neuen Status wünschen, aber Sie möchten ihncomponentDidUpdate
für ein bisschen mehr Vielseitigkeit verwenden.