调用setState后发生了什么?
- 代码中调用
setState
函数之后,React
会将传入的参数对象与组件当前的状态合并,然后触发所谓的调和过程(Reconciliation
)。 - 经过调和过程,
React
会以相对高效的方式根据新的状态构建React
元素树并且着手重新渲染整个UI
界面; - 在
React
得到元素树之后,React
会自动计算出新的树与老树的节点差异,然后根据差异对界面进行最小化重渲染; - 在差异计算算法中,
React
能够相对精确地知道哪些位置发生了改变以及应该如何改变,这就保证了按需更新,而不是全部重新渲染。
setState是异步还是同步:
详情链接
合成事件中是异步
钩子函数中的是异步
原生事件中是同步
setTimeout中是同步