【发布时间】:2020-04-24 13:35:02
【问题描述】:
我正在尝试为打字游戏制作一个简单的 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);
}, []);
*********编辑***************
这就是我现在所拥有的。第一个答案解决了计数器不递减的异步问题,但我不得不将 if 语句移到 useEffect 之外,以纠正我认为是由同样的问题引起的。
useEffect(() => {
let timer = setInterval(() => {
setCounter( counter => counter - 1);
}, 1000);
}, []);
if (counter == 0) {
setWordIndex(wordIndex + 1);
setLives(lives - 1);
life.play();
setCounter(10);
}
【问题讨论】:
-
记得时不时地重新查阅useState 文档。
-
这能回答你的问题吗? setInterval in a React app
标签: javascript reactjs settimeout setinterval use-effect