क्या प्रतिक्रिया हर बार सभी घटकों और उप घटकों को फिर से प्रस्तुत करती setState
है?
यदि हां, तो क्यों? मैंने सोचा कि विचार यह था कि रिएक्ट केवल आवश्यकतानुसार कम ही प्रदान किया गया - जब राज्य बदल गया।
निम्नलिखित सरल उदाहरण में, दोनों वर्गों को फिर से प्रस्तुत किया जाता है जब पाठ पर क्लिक किया जाता है, इस तथ्य के बावजूद कि राज्य बाद के क्लिकों में नहीं बदलता है, क्योंकि ऑनक्लिक हैंडलर हमेशा state
एक ही मूल्य पर सेट होता है :
this.setState({'test':'me'});
मुझे उम्मीद है कि रेंडर केवल तभी होगा जब state
डेटा बदल गया हो।
जेएस फिडेल और एम्बेडेड स्निपेट के रूप में उदाहरण का कोड यहां दिया गया है :
var TimeInChild = React.createClass({
render: function() {
var t = new Date().getTime();
return (
<p>Time in child:{t}</p>
);
}
});
var Main = React.createClass({
onTest: function() {
this.setState({'test':'me'});
},
render: function() {
var currentTime = new Date().getTime();
return (
<div onClick={this.onTest}>
<p>Time in main:{currentTime}</p>
<p>Click me to update time</p>
<TimeInChild/>
</div>
);
}
});
ReactDOM.render(<Main/>, document.body);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.0/react-dom.min.js"></script>
[1]: http://jsfiddle.net/fp2tncmb/2/
setState()
डमी डेटा के साथ भी कॉल करने से तत्व अलग तरीके से प्रस्तुत होता है, इसलिए मैं हां कहूंगा। बिल्कुल इसे अपनी वस्तु को फिर से प्रस्तुत करने का प्रयास करना चाहिए जब कुछ बदल गया हो सकता है क्योंकि अन्यथा आपका डेमो - यह मानकर कि यह इच्छित व्यवहार था - काम नहीं करेगा!
shouldComponentUpdate
विधि लिखने की आवश्यकता होती है , जिसे मैंने माना कि इसका एक सरल संस्करण पहले से ही रिएक्ट में शामिल होना चाहिए। प्रतिक्रिया में शामिल डिफ़ॉल्ट संस्करण की तरह लगता है बस रिटर्न true
- जो घटक को हर बार फिर से प्रस्तुत करने के लिए मजबूर करता है।