প্রতিক্রিয়া কি সমস্ত উপাদান এবং উপ উপাদানগুলি প্রতিবার 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- যা উপাদানটি প্রতি একক সময়টিকে পুনরায় রেন্ডার করতে বাধ্য করে।