在react中setState的更新state是同步还是异步的,跟我们使用的方式有关系!
同步更新
当setState在react的事件合成机制生成和生命周期函数对state更新时,是同步更新state!
异步更新
当setState在react的事件是原生的js绑定的事件、ajax、setTimeout、setIntervla等时是异步更新state!
原因
react在调用合成事件或者生命周期函数之前会先调用batchedUpdates,然后会把变量isBatchingUpdates的值由默认值false修改为true,当isbatchingUpdates的值为true的时候就不会同步更新state,否则就同步更新!
好处
这样做的好处就是性能方面的提升,在react的合成事件函数与生命周期函数中会进行批量更新优化,只执行最后一次!