Saya akan menerangkan cara jujukan panggilan ini berbeza dan cara tingkah laku yang diperhatikan boleh berlaku.
Saya tidak dapat memberitahu anda dengan tepat bagaimana keadaan kemas kini React dalam kelompok secara dalaman,
Saya hanya mengandaikan bahawa React mempunyai pengoptimuman kompleks yang tidak berkaitan dengan pembangun menggunakan React dan memerlukan pengetahuan mendalam tentang dalaman React dan mungkin juga berubah dari satu versi ke versi yang lain. (Sila betulkan saya.)
updaterSaya menganggap React cuba mengumpulkan semua
fungsi sedang beratur.
iaitu apabila hanya fungsi pengemas kini dipanggil, cuba sekumpulan mereka bersama-sama dan hanya kemas kini keadaan
akhir sekali.
setStateWalau bagaimanapun, jika fungsi baharu dipanggil, React boleh melengkapkan gelung kemas kini semasa dan memulakan kitaran pemaparan baharu sebelum memanggil fungsi pengemaskini代码> seterusnya.
Saya hanya boleh meneka mengapa ini dilakukan
Kerana setState baharu mungkin memecahkan kumpulan entah bagaimana, atau
Jika setState panggilan baharu dibuat secara rekursif, pemaparan seterusnya akan ditangguhkan terlalu banyak, atau
Orang React masih mengusahakan strategi pengoptimuman terbaik dan pertukaran mereka.
Saya akan menerangkan cara jujukan panggilan ini berbeza dan cara tingkah laku yang diperhatikan boleh berlaku.
Saya tidak dapat memberitahu anda dengan tepat bagaimana keadaan kemas kini React dalam kelompok secara dalaman, Saya hanya mengandaikan bahawa React mempunyai pengoptimuman kompleks yang tidak berkaitan dengan pembangun menggunakan React dan memerlukan pengetahuan mendalam tentang dalaman React dan mungkin juga berubah dari satu versi ke versi yang lain. (Sila betulkan saya.)
Perbezaan
FungsiPromise.resolve()
安排一个新的微任务,实际上相当于window.queueMicrotask()
.
) dipanggil dalam fasa pelaksanaan yang sama.setState
(mungkin) juga akan menjadualkan microtask baharu, Oleh itu panggilan balik mereka (Promise
和setState
Promise danhandleClickA
中,在两个updater
函数之间调用setState2
cangkukhandleClickB
中,两个updater
Fungsi dalam(FIFO
>):handleClickA
handleClickB
:updater
Saya menganggap React cuba mengumpulkan semuaiaitu apabila hanya fungsi pengemas kini dipanggil, cuba sekumpulan mereka bersama-sama dan hanya kemas kini keadaan
akhir sekali.setState
Walau bagaimanapun, jika fungsi baharu dipanggil, React boleh melengkapkan gelung kemas kini semasadan memulakan kitaran pemaparan baharu sebelum memanggil fungsi pengemaskini代码> seterusnya.
Saya hanya boleh meneka mengapa ini dilakukan
setState
baharu mungkin memecahkan kumpulan entah bagaimana, atausetState
panggilan baharu dibuat secara rekursif, pemaparan seterusnya akan ditangguhkan terlalu banyak, atau