2 回答

TA贡献1783条经验 获得超4个赞
Test只有一个setInterval函数,其中countalways 0。因为它仅在初始渲染期间创建。
它从未有另一个setInterval创建因为效果从来没有得到触发与[props]作为依赖。
要setInterval在每次重新渲染时更改 's 计数:
移除依赖
在效果中返回一个清理函数
useEffect(
() => {
const t = setInterval(() => {
console.log("count in interval is:", count);
}, 1000);
return () => clearInterval(t); // cleanup on every re-render
}
// no dependency: effect runs on every re-render
);
但是上面的代码会有一个警告:
“缺少count依赖”
因此,只需添加count为依赖项即可仅在count更改时运行效果。
useEffect(
() => {
const t = setInterval(() => {
console.log("count in interval is:", count);
}, 1000);
return () => clearInterval(t); // cleanup "old" setInterval
}
, [count] // ony run effect every time count changes
);
添加回答
举报