基础
上图中输出的值是0,0,2,3
普通setState
settimeout是宏任务
setState是异步的吗?
是异步的
是批量更新模式
因为setState会出发dom diff,计算量比较大,所以会有合并更新
6)
react合成事件都会生成一个batchupdate
setTimeout就是异步操作宏任务,原生事件和异步操作是不加入队列的
为什么前两次是0,是加入合成事件队列中去了,只保留最后一个key(count),后面一个是settimeout异步处理,执行队列中的操作一个个处理。
如何同步更新state
强依赖:这一次结果依赖于上一次结果
回调
函数
对象只保留最后一个,函数每个都执行
优化
减少diffdom运算次数
缓存不用频繁取值
等于10就让它更新