刚学react 看到了setState 看源码看不明白,然后翻博客自己总结了一下,不知道是对是错,帮忙看看总结的有没有问题:
1.setState本身是同步的,
但是在react的环境(合成函数,生命周期)中,表现出来的是异步的
如果在定时器或原生事件中则还是表现为同步
2.本质是react内部得一个优化
1.首先先开启isBachingUpdates = true 开启react内部维护的一个队列
2.同步执行setState,但现在setState执行的结果是向这个队列中添加修改state的对象
3.等函数或生命周期中的同步任务执行完毕,isBachingUpdates = false关闭队列
队列会将所有添加进来的对象合并得到最终得修改state的配置对象,然后调用一次setState,
并传入这个配置对象进行最终的修改