1. 首页
  2. 编程面试题
  3. 前端
  4. React

setState是同步的还是异步的?



答案是:有时表现出异步,有时表现出同步!

- 在合成事件和生命周期钩⼦函数中是异步的
- 在原⽣事件和 `setTimeout` 中是同步的

`setState` 的异步并不是指内部由异步代码实现。其实,它本身执⾏的过程及代码都是同步的,只是由于合成事件和钩⼦函数的调⽤顺序在更新之前,因此导致了在合成事件和钩⼦函数中没法立刻拿到更新后的值,所以形成了所谓的异步。

当然,我们可以通过使用第⼆个参数来拿到更新后的结果,它是个回调函数:

js
setState(partialState, callback)

此外,`setState` 的批量更新优化也是建⽴在异步(合成事件、钩⼦函数)之上的,在原⽣事件和 `setTimeout` 中不会批量更新。在异步中,如果对同⼀个值进⾏多次 `setState`,则它的批量更新策略会对其进⾏覆盖,只取最后⼀次的执⾏。如果同时 `setState` 多个不同的值,则会在更新时对其进⾏合并批量更新。

发布者:admin,如若转载,请注明出处:https://ai1024.vip/39226.html

QR code
//