在理解setState 是同步还是异步的 时,梳理下 setState 的源码逻辑,如下:
setState
同步或者异步取决于是在什么地方调用,在生命周期函数或者 React 合成事件回调表现为异步,因为 React 提前执行了 batchUpdates
,将 isBatchingUpdate
设置为 true
,所以会将 setState
的组件放入 dirtyComponents
中,等到生命周期函数或者合成事件回调执行完毕后更新。
在理解setState 是同步还是异步的 时,梳理下 setState 的源码逻辑,如下:
setState
同步或者异步取决于是在什么地方调用,在生命周期函数或者 React 合成事件回调表现为异步,因为 React 提前执行了 batchUpdates
,将 isBatchingUpdate
设置为 true
,所以会将 setState
的组件放入 dirtyComponents
中,等到生命周期函数或者合成事件回调执行完毕后更新。