useState异步更新的问题
来源:3-5 useState到底是同步更新还是异步更新

weixin_慕莱坞8082592
2023-08-23
flushSync(() => {
setCount(() => count + 1)
})
flushSync(() => {
setCount(() => count + 1)
})
flushSync(() => {
setCount(() => count + 1)
})
flushSync(() => {
setCount(() => count + 1)
})
老师,这种写法上,我理解 setCount会批量合并,计数会+1, 但是render应该会执行4次才对,但是实际经过测试,render只会渲染2遍;即使增加再多的flushSync也不行。
flushSync(() => {
setCount(count => count + 1)
})
flushSync(() => {
setCount(count => count + 1)
})
flushSync(() => {
setCount(count => count + 1)
})
flushSync(() => {
setCount(count => count + 1)
})
只有这种写法下,才跟你讲解的一致,为什么上面那种写法,不使用上次的值,render最多只渲染2次
写回答
3回答
-
weixin_慕瓜1443996
2023-08-24
setCount()如果传进去的是个回调函数的话,必须得把参数作为旧值,传进去
112023-08-25 -
河畔一角
2023-08-25
你上面第一种写法不对,要把count当做参数传递进去而不是取最外面的值
022023-08-27 -
qq_慕尼黑6518176
2023-08-24
你上面那种写法,count 只会➕1 render两次00
相似问题