Ich habe Angular nicht verwendet, aber wenn Sie den obigen Link lesen, scheinen Sie zu versuchen, für etwas zu codieren, das Sie nicht bearbeiten müssen. Sie nehmen Änderungen am Status in Ihrer React-Komponentenhierarchie vor (über this.setState ()) und React bewirkt, dass Ihre Komponente neu gerendert wird (und zwar effektiv auf Änderungen wartet). Wenn Sie von einer anderen Komponente in Ihrer Hierarchie aus zuhören möchten, haben Sie zwei Möglichkeiten:
- Übergeben Sie Handler (über Requisiten) von einem gemeinsamen Elternteil und lassen Sie sie den Status des Elternteils aktualisieren, wodurch die Hierarchie unter dem Elternteil neu gerendert wird.
- Um eine Explosion von Handlern zu vermeiden, die in der Hierarchie kaskadieren, sollten Sie alternativ das Flussmuster betrachten , das Ihren Status in Datenspeicher verschiebt und es Komponenten ermöglicht, diese auf Änderungen zu überwachen. Das Fluxxor-Plugin ist sehr nützlich, um dies zu verwalten.
Die folgenden Lebenszyklusmethoden werden aufgerufen, wenn sich der Status ändert. Sie können die angegebenen Argumente und den aktuellen Status verwenden, um festzustellen, ob sich etwas Sinnvolles geändert hat.
quelle
componentDidUpdate
der Komponente mit der Requisite war das richtige Rezept. Danke dafür.componentWillUpdate
wird veraltet: reactjs.org/blog/2018/03/27/update-on-async-rendering.htmlcomponentDidUpdate
nicht auch ausgelöst, wenn neue Requisiten empfangen werden, nicht unbedingt nur, wenn sich der Status ändert?componentWillUpdate
ist veraltet.Ich denke, Sie sollten den folgenden Komponentenlebenszyklus verwenden, als ob Sie eine Eingabeeigenschaft haben, die beim Update Ihr Komponentenupdate auslösen muss. Dies ist der beste Ort, um dies zu tun, da es vor dem Rendern aufgerufen wird. Sie können sogar den Komponentenstatus aktualisieren über die Ansicht reflektiert.
quelle
Seit React 16.8 im Jahr 2019 mit useState und useEffect Hooks sind folgende (in einfachen Fällen) gleichwertig:
AngularJS:
Reagieren:
quelle
Die Verwendung von useState mit useEffect wie oben beschrieben ist absolut korrekt. Wenn die Funktion getSearchResults jedoch ein Abonnement zurückgibt, sollte useEffect eine Funktion zurückgeben, die für das Abbestellen des Abonnements verantwortlich ist. Die von useEffect zurückgegebene Funktion wird vor jeder Änderung der Abhängigkeit (Name im obigen Fall) und bei der Zerstörung der Komponente ausgeführt
quelle
Es ist eine Weile her, aber als zukünftige Referenz: Die Methode shouldComponentUpdate () kann verwendet werden.
ref: https://reactjs.org/docs/react-component.html
quelle
shouldComponentUpdate
damit er möglicherweise nicht für diesen Anwendungsfall geeignet ist.