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
);
添加回答
舉報