setState 到底异步还是同步?

一句话总结

  • 在 React 的生命周期函数以及合成事件执行前,都会有一个隐形变量 isBatchingUpdates 变成true,结束时候变成 false,它决定了setState 到底是同步还是异步。所有在 isBatchingUpdates 变成 false 前执行的 setState 都是异步,因为它需要等待dom更新回来才会改变。
  • 同样如果isBatchingUpdates变成false之前,setState同一个变量,那么只会执行最后一个。




  • useState 同理
  • 如果像下面这个例子,这里跟setState会有区别,每一次setX react 都会处理,而 setState 只会处理最后一个。
const [x, setX] = useState(0)

const click = () => {
  setX(x => x + 1)
  setX(x => x + 1)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容