Kaedah React setState() dan Ketidakbolehubahan Keadaan
Dalam React, kaedah setState() digunakan untuk mengemas kini keadaan komponen. Walau bagaimanapun, adalah penting untuk memahami bahawa panggilan setState() tidak segera mengubah objek keadaan.
Mengapa Mutasi Keadaan Tidak Segera?
Dokumentasi React menerangkan setState() itu memulakan "peralihan keadaan belum selesai." Ia mencipta kemas kini yang belum selesai kepada keadaan, tetapi mengakses this.state selepas memanggil setState() boleh mengembalikan keadaan sedia ada. Ini kerana React mungkin mengemas kini keadaan kumpulan atas sebab prestasi.
Demonstrasi Sifat Asynchronous
Pertimbangkan contoh kod berikut yang dibentangkan dalam soalan:
handleChange: function(event) { console.log(this.state.value); // Prints the initial value this.setState({value: event.target.value}); console.log(this.state.value); // Prints the same value as above }
Dalam contoh ini, apabila nilai input dikemas kini, kaedah handleChange dipanggil. Pernyataan console.log pertama mencetak nilai keadaan awal, manakala pernyataan console.log kedua dijangka mencetak nilai yang dikemas kini. Walau bagaimanapun, memandangkan setState() beroperasi secara tidak segerak, pernyataan console.log kedua masih mengembalikan nilai awal.
Penyelesaian untuk Kemas Kini Segera
Jika anda perlu melaksanakan fungsi selepas kemas kini keadaan, anda boleh menghantarnya sebagai panggilan balik kepada setState():
this.setState({value: event.target.value}, function () { console.log(this.state.value); // Prints the updated value });
Dalam kes ini, panggilan balik akan digunakan sebaik sahaja kemas kini keadaan selesai dan nilai yang dikemas kini akan tersedia dalam this.state.
Atas ialah kandungan terperinci Bagaimanakah Kaedah `setState()` Asynchronous React's Impact State Updates dan Bagaimana Saya Boleh Memastikan Akses Segera kepada Keadaan Kemas Kini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!