setState dalam React: Kemas Kini Keadaan Asynchronous
Kaedah setState React adalah tak segerak, bermakna ia tidak mengemas kini keadaan serta-merta. Tingkah laku ini selalunya membawa kepada kekeliruan apabila pembangun menjangkakan perubahan segera kepada keadaan selepas memanggil setState.
Dalam contoh yang diberikan, keadaan komponen tidak dikemas kini apabila mengklik butang kerana console.log(this.state.boardAddModalShow) melaksanakan sebelum mutasi keadaan selesai.
Untuk log keadaan kemas kini dengan betul, fungsi panggil balik yang disediakan untuk setState hendaklah digunakan:
openAddBoardModal() { this.setState({ boardAddModalShow: true }, () => { console.log(this.state.boardAddModalShow); }); }
Sifat Asynchronous setState
React menangguhkan mutasi keadaan untuk meningkatkan prestasi dengan menggabungkannya bersama-sama. Pengoptimuman ini menghalang pemaparan semula yang tidak perlu dan memastikan pengalaman pengguna yang lebih lancar.
Seperti yang dinyatakan dalam dokumentasi React:
"setState() tidak serta-merta memutasi this.state tetapi mencipta peralihan keadaan belum selesai . Mengakses this.state selepas memanggil kaedah ini berpotensi mengembalikan nilai sedia ada Tiada jaminan operasi segerak untuk setState dan panggilan mungkin berkumpulan untuk peningkatan prestasi."
Mengapa Kemas Kini Keadaan Asynchronous?
Kemas kini keadaan Async adalah perlu kerana mengubah suai keadaan boleh menjadi operasi yang mahal dari segi pengiraan yang mungkin melibatkan memaparkan semula keseluruhan pokok komponen. Dengan membuat setState async, React boleh mengumpulkan berbilang kemas kini keadaan bersama-sama dan melaksanakannya dengan cekap dalam satu kitaran pemaparan semula. Pengoptimuman ini menghalang UI daripada menjadi tidak bertindak balas disebabkan mutasi keadaan yang berlebihan.
Atas ialah kandungan terperinci Mengapa setState React Asynchronous, dan Bagaimana Saya Boleh Memastikan Saya Mengakses Keadaan Yang Dikemas Kini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!