React แสดงองค์ประกอบทั้งหมดและส่วนประกอบย่อยใหม่ทุกครั้งที่setState
เรียกใช้หรือไม่
ถ้าเป็นเช่นนั้นทำไม ฉันคิดว่าความคิดคือการตอบสนองเพียงเล็กน้อยตามที่ต้องการ - เมื่อรัฐเปลี่ยน
ในตัวอย่างง่ายๆดังต่อไปนี้คลาสทั้งสองจะแสดงอีกครั้งเมื่อมีการคลิกข้อความแม้ว่าข้อเท็จจริงที่ว่ารัฐจะไม่เปลี่ยนแปลงในการคลิกที่ตามมาเนื่องจากตัวจัดการ onClick ตั้งstate
ค่าเป็นค่าเดียวกันเสมอ:
this.setState({'test':'me'});
ฉันคาดว่าการแสดงผลจะเกิดขึ้นก็ต่อเมื่อstate
ข้อมูลมีการเปลี่ยนแปลง
นี่คือตัวอย่างรหัสในฐานะ JS Fiddleและตัวอย่างข้อมูลในตัว:
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
วิธีการของคุณเองซึ่งฉันคิดว่าเวอร์ชันที่เรียบง่ายของมันจะต้องรวมอยู่ใน React แล้ว เสียงเหมือนเวอร์ชันเริ่มต้นที่รวมอยู่ในการตอบสนองจะส่งคืนtrue
ซึ่งบังคับให้ส่วนประกอบแสดงผลซ้ำทุกครั้ง