我目前正在开发一个应用程序Reactive原住民,其中包括一个秒表,当手机陀螺仪捕捉到一定数量的运动时停止。为此,我使用setInterval检查陀螺仪上的更新,如果满足要求,请停止计时器。然而,当setInterval运行时出现了问题,通常是在clearInterval停止运行5到6次之后,并使用钩子来检查游戏是否已经开始。目前,setInterval设置为1ms,但无论间隔是1000 ms还是10000 ms,仍然存在相同的问题。
const stopwatchINT = setInterval(() => {
if (gameStarted) {
if (data.x > 0.2) {
clearInterval(stopwatchINT)
let endTimer = performance.now()
setTimeTook(Math.round(endTimer - startTimer) + 'ms')
playSound()
setContainer(WHITE)
setGameStarted(false)
setReactionScreenDisplay({'select': 'none','singleCreate': 'none', 'reactionGame': 'none', 'flash': 'none', 'timeTook': 'block'})
}
}
}, 1)发布于 2021-12-30 17:37:30
没关系,我已经解决了这个问题。对于任何被困在这上面的人,您可以将setInterval封装在一个useEffect中,这就是抛给我的原因,因为我忘记了传递数组中的钩子。例如:
useEffect(() => {
if (isStart) {
const timer = setInterval(() => {
if (count > 0) {
setCount(count - 1)
} else {
setCount('Times up');
clearInterval(timer);
}
}, 1000);
}
}, [isStart]);https://stackoverflow.com/questions/70531361
复制相似问题