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()如果传进去的是个回调函数的话,必须得把参数作为旧值,传进去

1
1
河畔一角
回答正确
2023-08-25
共1条回复

河畔一角

2023-08-25

你上面第一种写法不对,要把count当做参数传递进去而不是取最外面的值

0
2
河畔一角
回复
weixin_慕莱坞8082592
没具体研究过17,回答不了。
2023-08-27
共2条回复

qq_慕尼黑6518176

2023-08-24

你上面那种写法,count 只会➕1 render两次
0
0

React18+TS 通用后台管理系统解决方案落地实战

全面提升React高阶技能,灵活驾驭各类后台管理系统开发痛点

624 学习 · 226 问题

查看课程