关于setState的理解
来源:5-4 -state特点-异步更新,合并后更新

见信
2023-04-15
setCount(count + 1) // 0+1
先执行count + 1表达式,计算出参数,该参数再传入setCount,然后依次添加5个setCount进入异步队列,最后顺序执行5个setCount,所以产生了所谓的合并效果,但是实际上还是再异步队列中执行了5此setCount,只是结果上看是产生了合并?
setCount(() => count + 1)
直接传入函数进入setCount,添加5个setCount进入异步队列,然后执行5个setCount,5个setCount顺序执行,setCount内部通过函数计算处count,5次执行过后实现+5,然后所有异步任务执行完成,通知DOM进行更新?
其他
还是说上面两种说法都不准确?而是setCount内部有一个队列,分别放入5个count+1与5个函数,然后setCount其实就只是一个,本质是只执行一次setCount,而内部队列执行5次?
写回答
1回答
-
第一种情况,执行了 5 次,但每次都是 0 + 1
第二种情况,执行了 5 次,但是累加
再到详细情况,就扯到 setState 的源码了,那就太细节了,篇幅会很大。
10
相似问题