@ jpdelatorre का जवाब सामान्य कारणों को उजागर करने में बहुत अच्छा है कि एक रिएक्ट घटक फिर से क्यों प्रस्तुत कर सकता है।
मैं बस एक उदाहरण में थोड़ा गहरा गोता लगाना चाहता था: जब प्रॉप्स बदलते हैं । समस्या निवारण जो पुन: प्रस्तुत करने के लिए एक रिएक्ट घटक का कारण बन रहा है, वह एक सामान्य समस्या है, और मेरे अनुभव में इस मुद्दे को ट्रैक करने के लिए कई बार यह निर्धारित करना शामिल है कि कौन सा प्रॉपर बदल रहा है ।
जब भी वे नए प्रॉप्स प्राप्त करते हैं तो रिएक्ट घटकों को फिर से प्रस्तुत करें। वे नए प्रॉप्स प्राप्त कर सकते हैं जैसे:
<MyComponent prop1={currentPosition} prop2={myVariable} />
या यदि MyComponentवह किसी रिड्यूस स्टोर से जुड़ा हो:
function mapStateToProps (state) {
return {
prop3: state.data.get('savedName'),
prop4: state.data.get('userCount')
}
}
किसी भी समय का मूल्य prop1, prop2, prop3, या prop4परिवर्तन MyComponentफिर से प्रस्तुत करना होगा। 4 प्रॉप्स के साथ यह ट्रैक करना बहुत मुश्किल नहीं है console.log(this.props)कि प्रॉप को renderब्लॉक की शुरुआत में लगाकर किस तरह से बदल रहे हैं । हालांकि अधिक जटिल घटकों और अधिक से अधिक सहारा के साथ यह विधि अस्थिर है।
यहां एक उपयोगी दृष्टिकोण ( सुविधा के लिए लॉश का उपयोग करके ) यह निर्धारित करने के लिए है कि कौन से प्रोपर परिवर्तन एक घटक को फिर से प्रस्तुत करने का कारण बन रहे हैं:
componentWillReceiveProps (nextProps) {
const changedProps = _.reduce(this.props, function (result, value, key) {
return _.isEqual(value, nextProps[key])
? result
: result.concat(key)
}, [])
console.log('changedProps: ', changedProps)
}
इस स्निपेट को अपने कंपोनेंट में जोड़ने से अपराधी को संदिग्ध री-रेंडर करने में मदद मिल सकती है, और कई बार यह अनावश्यक डेटा को घटकों में पाइप किए जाने पर शेड को कम करने में मदद करता है।
shouldComponentUpdateऑटोमैटिक कंपोनेंट अपडेट को डिसेबल कर सकें और फिर वहां से अपना ट्रेस शुरू कर सकें । अधिक जानकारी यहां पाई जा सकती है: facebook.github.io/react/docs/optimizing-performance.html