❤️

setState 是同步还是异步的

🤨
高阶可以看源码

 
原答案:
setState 在不同情况下可以是同步也可以是异步
  • 同步:setTimeoutsetInterval
  • 异步:promise.then()、合成事件
记得不太清别的情况了,大概是这样

 
参考:
setState 本身的代码和过程都是 同步 的。它能表现出 异步 的现象是因为在某些情况下调用顺序在更新之前,导致获取的 state 是更新前的值。
  • 同步:setTimeout、原生事件
  • 异步:合成事件、钩子函数、promise.then()
setState批量更新优化也是建立在异步之上,在同步上是不会批量更新的。