Test
имеет только одну функцию setInterval
, где count
всегда 0
. Так как он создается только во время начального рендеринга.
В нем никогда не было создано другого setInterval
, поскольку эффект никогда не срабатывал с [props]
в качестве зависимости.
Для изменения количества setInterval
при каждом повторном рендеринге:
- Удаление зависимости
- Возвращение функции очистки внутри эффекта
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
);