react的setState是同步還是異步,什么時候是同步,什么時候是異步?


1.在回答這個問題之前,我們先來做一個假設;
如果setState是同步的,意味着每執行一次setState就會進行vnode diff+dom修改,
如果是異步,就可以把一個同步代碼中的多個setState合並成一次組件更新;

2.setState什么時候是同步?
在setTimeOut或者原生事件中,setState是同步的

3.setState什么時候是異步?
在React自定義事件中是異步

4.setState之后發生了什么?
在代碼中setState之后,React會將傳入的參數對象與組件當前狀態合並,觸發所謂的調和過程(Reconciliation);
經過調和過程,React會以相對高效的方式根據新的狀態構建React元素樹並着手渲染ui界面;
在React得到新的元素樹之后,會自動計算出新老樹之間的結構差異,然后根據差異對界面進行最小化重渲染;
在差異算法中,React能夠相對精確的計算出哪些位置發生了改變,做到按需加載而不用重新渲染整個界面


免責聲明!

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



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