关于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回答

双越

2023-04-16

第一种情况,执行了 5 次,但每次都是 0 + 1 

第二种情况,执行了 5 次,但是累加


再到详细情况,就扯到 setState 的源码了,那就太细节了,篇幅会很大。

1
0

React18+ Nest.js 全栈开发仿问卷星项目

React18+TS4+Antd5+Next.js13 ,B端+C 端,完整业务

383 学习 · 252 问题

查看课程