React Native 在clearInterval运行后,响应本机setInterval运行5或6次

rjee0c15  于 2023-01-21  发布在  React
关注(0)|答案(1)|浏览(133)

我目前正在React Native中开发一个应用程序,其中包括一个秒表,当手机陀螺仪检测到一定量的运动时,秒表会停止。为此,我使用setInterval来检查陀螺仪上的更新,如果满足要求,则停止计时器。然而,当setInterval在被clearInterval停止并使用钩子检查游戏是否已经开始之后通常运行5-6次时,问题出现。当前setInterval设置为1 ms,但无论间隔是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)
i34xakig

i34xakig1#

没关系,我已经解决了这个问题。对于任何人谁卡住了,你可以把setInterval封装在一个useEffect,这是什么扔给我,因为我忘了传递数组中的钩子。例如:

useEffect(() => {
    if (isStart) {
        const timer = setInterval(() => {
            if (count > 0) {
                setCount(count - 1)
            } else {
                setCount('Times up');
                clearInterval(timer);
            }
        }, 1000);
    }
}, [isStart]);

相关问题