react-hooks获取到的都是旧值?
const [currentIndex, setCurrentIndex] = useState<number>(0)
useEffect(() => {
interval()
}, [])
/** timeout模拟interval */
const interval = () => {
setTimout(() => {
if (currentIndex < 100) {
console.log(currentIndex) // 打印的一直都是0
setCurrentIndex(prev => (++prev))
}
}, 1000)
}
/** 页面上能按照每秒+1更新,但是会一直执行定时器,控制台也是一直打印0,永远也到达不了边界 */
return (
<View>{currentIndex}</View>
)
如上代码所示,定时器里退出判断条件里的currentIndex一直都是旧的值,导致代码无法退出?
可是页面上却已经更新了DOM。。。
这是为什么呢?想知道这是怎么回事
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
指向问题,这个函数在执行的时候指向的就是上一个值,同步的话你要用useRef来接这个值。