Was entspricht der $ watch- Funktion des Winkels in React.js?
Ich möchte Statusänderungen abhören und eine Funktion wie getSearchResults () aufrufen.
componentDidMount: function() {
this.getSearchResults();
}
Was entspricht der $ watch- Funktion des Winkels in React.js?
Ich möchte Statusänderungen abhören und eine Funktion wie getSearchResults () aufrufen.
componentDidMount: function() {
this.getSearchResults();
}
Antworten:
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:
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.
componentWillUpdate(object nextProps, object nextState)
componentDidUpdate(object prevProps, object prevState)
componentDidUpdateder Komponente mit der Requisite war das richtige Rezept. Danke dafür.
componentWillUpdatewird veraltet: reactjs.org/blog/2018/03/27/update-on-async-rendering.html
componentDidUpdatenicht auch ausgelöst, wenn neue Requisiten empfangen werden, nicht unbedingt nur, wenn sich der Status ändert?
componentWillUpdateist 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.
componentWillReceiveProps: function(nextProps) {
this.setState({
likesIncreasing: nextProps.likeCount > this.props.likeCount
});
}
Seit React 16.8 im Jahr 2019 mit useState und useEffect Hooks sind folgende (in einfachen Fällen) gleichwertig:
AngularJS:
$scope.name = 'misko'
$scope.$watch('name', getSearchResults)
<input ng-model="name" />
Reagieren:
const [name, setName] = useState('misko')
useEffect(getSearchResults, [name])
<input value={name} onChange={e => setName(e.target.value)} />
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
Es ist eine Weile her, aber als zukünftige Referenz: Die Methode shouldComponentUpdate () kann verwendet werden.
Ein Update kann durch Änderungen an Requisiten oder Status verursacht werden. Diese Methoden werden in der folgenden Reihenfolge aufgerufen, wenn eine Komponente erneut gerendert wird:
static getDerivedStateFromProps()
shouldComponentUpdate()
render()
getSnapshotBeforeUpdate()
componentDidUpdate()
shouldComponentUpdatedamit er möglicherweise nicht für diesen Anwendungsfall geeignet ist.