React中的setState什么時候是同步的,什么時候是異步的?


1、setState 只在合成事件和鈎子函數中是“異步”的,在原生事件和setTimeout 中都是同步的。

2、setState 的“異步”並不是說內部由異步代碼實現,其實本身執行的過程和代碼都是同步的,只是合成事件和鈎子函數的調用順序在更新之前,導致在合成事件和鈎子函數中沒法立馬拿到更新后的值,形成了所謂的“異步”,當然可以通過第二個參數 setState(partialState, callback) 中的callback拿到更新后的結果。

3、setState 的批量更新優化也是建立在“異步”(合成事件、鈎子函數)之上的,在原生事件和setTimeout 中不會批量更新,在“異步”中如果對同一個值進行多次setState,setState的批量更新策略會對其進行覆蓋,取最后一次的執行,如果是同時setState多個不同的值,在更新時會對其進行合並批量更新。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM