Я пытаюсь сделать простую функцию setInterval для игры на машинке, но она продолжает зависать в зависимости от моего синтаксиса или вообще не обновляется, как сейчас.
Как мне заставить это обновляться каждую секунду и вызывать функции в операторе if?
const [counter, setCounter] = useState(10);
useEffect(() => {
let timer = setInterval(() => {
setCounter(counter - 1);
if (counter === 0) {
setWordIndex(wordIndex + 1);
setLives(lives - 1);
life.play();
setCounter(10);
}
}, 1000);
}, []);
********* Edit ******* ********
Это то, что у меня сейчас работает. В первом ответе исправлена асинхронная c проблема с счетчиком, не уменьшавшимся, но мне пришлось переместить оператор if за пределы useEffect, чтобы исправить то, что, по моему мнению, было вызвано этой же проблемой.
useEffect(() => {
let timer = setInterval(() => {
setCounter( counter => counter - 1);
}, 1000);
}, []);
if (counter == 0) {
setWordIndex(wordIndex + 1);
setLives(lives - 1);
life.play();
setCounter(10);
}