setTimeout 起什么作用
来源:1-1 老司机带你弯道超车,技能&经验收获满满

苍松拔雨8732926
2023-05-19
因为 setCount 是异步的,所以连续调用 3 次 setCount 结果只会 +1,因为后两次 setCount 拿到的都是 count 更新前的值。
使用 setTimeout 调用 setCount 和直接调用 setCount,结果都是一样的,不明白这里讲 setTimeout 是想表达什么
写回答
2回答
-
河畔一角
2023-05-19
第三章第四节课,讲的是useState()这个Hook,其中在末尾的时候,使用了下面的例子:
setCount(count+1)
setTimeout(()=>{
setCount(count+1)
})
主要想表达的是:
setCount() 是一个异步更新函数,不会同步执行。
当setCount放入setTimeout异步函数以后,在16和17版本里面会变成同步更新,不过视频是React18所以依然是异步渲染,这个我稍后从新补录一节课演示一下同步和异步在18里面的效果。
当setCount()参数变成函数时,会拿到最新值,但是依然是异步更新。setCount(count => count + 1)
这是我想传递的知识,这个例子写的不是很好,可能给大家带来疑惑,实际上useState并没有同步和异步一说,代码本身执行其实是同步,只是更新机制不同,由React的合成机制决定,React18相比之前的版本发生了一些变化,比如concurrent、useState始终表现异步、useTransition等等.
10 -
河畔一角
2023-05-25
我已经在第三章补录了一节课做了说明,从新演示了一下同步和异步效果
00
相似问题