React.js'de açısalın $ watch işlevi eşdeğeri nedir?
Durum değişikliklerini dinlemek ve getSearchResults () gibi bir işlevi çağırmak istiyorum.
componentDidMount: function() {
this.getSearchResults();
}
React.js'de açısalın $ watch işlevi eşdeğeri nedir?
Durum değişikliklerini dinlemek ve getSearchResults () gibi bir işlevi çağırmak istiyorum.
componentDidMount: function() {
this.getSearchResults();
}
Yanıtlar:
Angular'ı kullanmadım, ancak yukarıdaki bağlantıyı okuduğunuzda, ele almanız gerekmeyen bir şeyi kodlamaya çalıştığınız anlaşılıyor. React bileşen hiyerarşisinde durum değişiklikleri yaparsınız (this.setState () aracılığıyla) ve React bileşeninizin yeniden oluşturulmasına neden olur (değişiklikleri etkili bir şekilde 'dinler'). Hiyerarşinizdeki başka bir bileşenden 'dinlemek' istiyorsanız, iki seçeneğiniz vardır:
Durum değiştiğinde aşağıdaki yaşam döngüsü yöntemleri çağrılır. Anlamlı bir şeyin değişip değişmediğini belirlemek için sağlanan bağımsız değişkenleri ve geçerli durumu kullanabilirsiniz.
componentWillUpdate(object nextProps, object nextState)
componentDidUpdate(object prevProps, object prevState)
componentDidUpdate
pervane ile bileşen eklemek doğru reçete idi. Bunun için teşekkürler.
componentWillUpdate
kullanımdan kaldırılıyor: reaktjs.org/blog/2018/03/27/update-on-async-rendering.html
componentDidUpdate
mutlaka, sadece zaman durum değişikliklerini yeni sahne alırken aynı zamanda ateş?
componentWillUpdate
kullanımdan kaldırıldı.
Güncellemede bileşen güncellemenizi tetiklemesi gereken bir girdi özelliğiniz varmış gibi Bileşen Yaşam Döngüsü altında kullanmanız gerektiğini düşünüyorum. görünümde yansıtıyordu.
componentWillReceiveProps: function(nextProps) {
this.setState({
likesIncreasing: nextProps.likeCount > this.props.likeCount
});
}
2019'da useState ve useEffect Hooks ile React 16.8 olduğundan , aşağıdakiler artık eşdeğerdir (basit durumlarda):
angularjs:
$scope.name = 'misko'
$scope.$watch('name', getSearchResults)
<input ng-model="name" />
Tepki:
const [name, setName] = useState('misko')
useEffect(getSearchResults, [name])
<input value={name} onChange={e => setName(e.target.value)} />
UseState with useEffect uygulamasını yukarıda açıklandığı gibi kullanmak kesinlikle doğru yoldur. Ancak getSearchResults işlevi abonelik döndürürse useEffect, aboneliği iptal etmekten sorumlu bir işlev döndürmelidir. UseEffect işlevinden döndürülen işlev, bağımlılıktaki her değişiklikten önce (yukarıdaki durumda ad) ve bileşen yok etme durumunda çalışır
Bir süre oldu, ancak ileride başvurmak için: shouldComponentUpdate () yöntemi kullanılabilir.
Güncelleme, sahne veya durum değişikliklerinden kaynaklanabilir. Bir bileşen yeniden oluşturulduğunda bu yöntemler aşağıdaki sırayla çağrılır:
static getDerivedStateFromProps()
shouldComponentUpdate()
render()
getSnapshotBeforeUpdate()
componentDidUpdate()
shouldComponentUpdate
Bu kullanım durumu için uygun olmayabileceği için bir boole döndürmeniz gerekir.