@ jpdelatorre'nin cevabı, bir React bileşeninin neden yeniden oluşturulabileceğinin genel nedenlerini vurgulamakta harika.
Sadece bir örneğe biraz daha derin dalmak istedim: sahne değiştiğinde . Bir React bileşeninin yeniden oluşturulmasına neyin sebep olduğunu sorun giderme yaygın bir sorundur ve deneyimlerime göre, çoğu zaman bu sorunu takip etmek, hangi props'ların değiştiğinin belirlenmesini içerir .
React bileşenleri, yeni sahne aldıklarında yeniden oluşturulur. Aşağıdakiler gibi yeni eşyalar alabilirler:
<MyComponent prop1={currentPosition} prop2={myVariable} />
veya MyComponent
bir redux mağazasına bağlıysa:
function mapStateToProps (state) {
return {
prop3: state.data.get('savedName'),
prop4: state.data.get('userCount')
}
}
Herzaman değeri prop1
, prop2
, prop3
veya prop4
değişiklikler MyComponent
yeniden işlerler. 4 sahne console.log(this.props)
ile, render
bloğun başlangıcına bir tane koyarak hangi eşyanın değiştiğini izlemek çok zor değil . Bununla birlikte, daha karmaşık bileşenler ve giderek daha fazla sahne donanımı ile bu yöntem savunulamaz.
İşte hangi prop değişikliklerinin bir bileşenin yeniden oluşturulmasına neden olduğunu belirlemek için yararlı bir yaklaşım ( kolaylık sağlamak için lodash kullanarak ):
componentWillReceiveProps (nextProps) {
const changedProps = _.reduce(this.props, function (result, value, key) {
return _.isEqual(value, nextProps[key])
? result
: result.concat(key)
}, [])
console.log('changedProps: ', changedProps)
}
Bu pasajı bileşeninize eklemek, şüpheli yeniden işlemelere neden olan suçluyu ortaya çıkarmaya yardımcı olabilir ve çoğu zaman bu, bileşenlere iletilen gereksiz verilere ışık tutmaya yardımcı olur.
shouldComponentUpdate
otomatik bileşen güncellemesini devre dışı bırakıp ardından izinizi oradan başlatmak için kullanabilirsiniz. Daha fazla bilgiyi burada bulabilirsiniz: facebook.github.io/react/docs/optimizing-performance.html