setState 是同步还是异步?

setState 是同步还是异步?

setState 是同步还是异步? - 魔术师卡颂

ReactDOM.render 是 legacy 模式,ReactDOM.createRoot 是 concurrent 模式(不同的更新有不同的优先级,并且更新也是可以被打断的),目前还在实验阶段。this.setState 是同步还是异步的? 在 legacy 模式中,如果触发了 batchedUpdates 就是异步更新,没有触发是同步;在 concurrent 模式中总是异步更新。

可以通过异步调用 this.setState 来避免 batchedUpdates 来实现同步更新。 batchedUpdates 其实是 React 的一个性能优化的点,如果在一次 render 中同步调用了多个 this.setState,React 会将它们合并成一次操作,也就是所谓的批处理。