Вы можете использовать ловушку useEffect , эта ловушка позволяет вам выполнять код при изменении любого из значений внутри массива зависимостей. Вы можете использовать это так:
useEffect(()=> {
doSomethingWhenFooChanges();
},[foo]);
Изменить, чтобы обогатить ответ:
Вы можете сделать что-то вроде этого:
function Component(props) {
const [timerOn, setTimerOn] = useState(false);
function startTimer() {
setTimerOn(true);
}
//Declaring timer variable
let timer;
useEffect(()=> {
if(!timerOn) {
timer = setTimeout(() => setTimerOn(false), 1000);
startTimer();
} else {
//To prevent memory leaks you must clear the timer
clearTimeout(timer);
}
}, [timerOn]);
}
В любом случае я не могу подумайте о сценарии, в котором вам нужно перезапустить таймер, когда вы можете использовать setInterval . Эта функция выполняет функцию каждые n секунд. И он используется как:
setInterval(()=> {
myFunctionToBeExecutedEvery1000ms();
}, 1000);
С уважением