Apakah Bereaksi ulang membuat semua komponen dan sub komponen setiap kali setState
dipanggil?
Jika demikian, mengapa? Saya pikir idenya adalah bahwa Bereaksi hanya memberikan sesedikit yang diperlukan - ketika keadaan berubah.
Dalam contoh sederhana berikut, kedua kelas merender lagi ketika teks diklik, terlepas dari kenyataan bahwa keadaan tidak berubah pada klik berikutnya, karena penangan onClick selalu menetapkan nilai state
yang sama:
this.setState({'test':'me'});
Saya akan berharap bahwa rendering hanya akan terjadi jika state
data telah berubah.
Berikut kode contohnya, sebagai JS Fiddle , dan cuplikan yang disematkan:
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()
bahkan dengan data dummy memang menyebabkan elemen untuk membuat berbeda sehingga saya akan mengatakan ya. Benar-benar harus mencoba untuk me-render kembali objek Anda ketika sesuatu mungkin telah berubah karena jika tidak demo Anda - dengan asumsi itu adalah perilaku yang dimaksudkan - tidak akan berhasil!
shouldComponentUpdate
metode Anda sendiri , yang saya asumsikan versi sederhananya sudah harus dimasukkan dalam Bereaksi itu sendiri. Kedengarannya seperti versi default yang disertakan dalam reaksi hanya mengembalikan true
- yang memaksa komponen untuk merender ulang setiap saat.