这就是react经典的闭包陷阱了,原因是在函数组件中,a的值一直是初始值,有几种方案可以解决:
1、把a加到useEffect的第二个参数中,即:
useEffect(() => {
let timer = setInterval(() => {
setCount(a + 1);
}, 1000);
return () => {
clearInterval(timer)
}
}, [a]);
2、利用函数更新:
useEffect(() => {
let timer = setInterval(() => {
setCount(p => p + 1);
}, 1000);
return () => {
clearInterval(timer)
}
}, []);
3、用useRef保存count的值
闭包陷阱可以搜索引擎搜一下,有很多相关的内容
59 天前