setState 是异步还是同步,setState 之后发生了哪些事情
setState 的 “异步” 并不是说内部由异步代码实现,其实本身执行的过程和代码都是同步的,只是合成事件和钩子函数的调用顺序在更新之前,导致在合成事件和钩子函数中没法立马拿到更新后的值,形式了所谓的 “异步”,当然可以通过第二个参数 setState (partialState, callback) 中的 callback 拿到更新后的结果。 setState 的批量更新优化也是建立在 “异步”(合成事件、钩子函数)之上的,在原生事件和 setTimeout 中不会批量更新,在 “异步” 中如果对同一个值进行多次 setState , setState...
more...