wie und Wann ein Anruf reagieren Komponente Methoden nach Zustand zu ändern, von redux
In einem einzigen reagieren Komponente ein Benutzer auf eine Schaltfläche klickt, => das ruft eine Methode => löst eine Aktion aus => async Holen => reducer updates state => Komponente erhält neue Requisiten.
zurück in die ursprüngliche Komponente, die der Auslöser für die Aktion, die ich verwendet haben:
componentWillReceiveProps(nextProps){
if(nextProps.someProp !== this.props.someProp){
//ok new prop is here
this.someMethod(nextProps.someProp);
}
}
Werde ich über diese in der richtigen Weise?
Es scheint nur etwas klobig und fast wie ein callback-Mechanismus vom Benutzer-Aktion oder Zustandsänderung. Es macht einfach nach dem logischen Ablauf der härter-Komponente einmal gibt es ein paar von diesen, ich habe eine Komponente, mit 3 von diesen und denke schon es ist nicht so einfach zu Grunde geht, insbesondere, wenn Sie Teil eines zusammenhängenden flow a > b > c . Und ich landete mit dieser Art der Sache:
componentWillReceiveProps(nextProps){
if(this.patchJavaScriptWillLoad(nextProps)){
this.createPatchInstance();
//method fires an action which will also result in state change that triggers the below.
}
if(this.patchInstanceWillBeReady(nextProps)){
this.startPatchAudio(nextProps.webAudioPatch.instance);
//method fires an action which will also result in state change that triggers the below.
}
if(this.patchParametersWillChange(nextProps)){
this.updateWebAudioPatchParameters(nextProps.webAudioPatchParameters);
}
}
//abstracted away if conditions to make componentWillReceiveProps more readable.
Aber ist dies, wie es getan werden sollte, oder ist das ein symptom der sich nicht bewegt, genug Logik um den action-Machern?
- Nicht wissen, die Besonderheiten Ihrer Funktionen, die es wäre schwer zu beurteilen, aber es fühlt sich, dass Sie Ihre callback-Logik bewegt werden kann, um den action-Machern, vor allem, wenn Sie mit redux-thunk.
- componentWillReceiveProps ist immer veraltet. Nachschlagen getDerivedStateFromProps
Du musst angemeldet sein, um einen Kommentar abzugeben.
Genauere Beispiele wären nützlich, aber basierend auf dem, was Sie hier haben, ich denken ich sehen, was Sie bekommen in.
Kurze Antwort: ja, dies ist ein symptom der sich nicht bewegt, genug Logik, um den action-Machern. Ideal, Ihr Komponente sollte eine Reine view-Komponente. Keine Notwendigkeit für
componentWillReceiveProps
in den meisten Fällen - einfach Rendern, was die Requisiten sind und das ist, dass. Dies ist der Grund, warum Abramov (Schöpfer von redux) plädiert für eine funktionale Komponenten. Mehr auf, dass hier.Wenn Sie brauchen, um andere Aktionen durchführen, nachdem ein asynchroner Aufruf gibt einige Daten, die Sie würde tun, wie Sie sagten, in der action-Schöpfer. Ich werde gehen mit einem Beispiel, das verwendet thunks:
EDIT: ich fügte hinzu, ein Beispiel für die Komponente übergeben Sie einen Verweis auf die audio-player-als argument an die Aktion. So, die Aktion manipulieren können, nach dem asynchronen Schritt.
Wenn du mehr erfahren möchtest über die async-Zeug mit redux, oder für diese Angelegenheit, das zusammenspiel mit stateful-Bibliotheken von Ihrem redux app, empfehle ich geben die redux-Dokumentation gut zu Lesen. Die Grundlage der thunk Beispiel oben kam von hier.
Gutes Glück und haben Spaß mit Reagieren + Redux!
Ein update verursacht werden kann, durch änderungen an Requisiten oder Staat. Diese Methoden sind in der folgenden Reihenfolge aufgerufen, wenn eine Komponente neu gerendert:
Versuchen componentDidUpdate()
Reagieren docs https://reactjs.org/docs/react-component.html#updating