@ 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 MyComponentbir 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, prop3veya prop4değişiklikler MyComponentyeniden işlerler. 4 sahne console.log(this.props)ile, renderbloğ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.
shouldComponentUpdateotomatik 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