【问题标题】:setState inside setInterval causing to hang the application | React NativesetInterval 内的 setState 导致应用程序挂起 |反应原生
【发布时间】:2026-02-19 04:30:02
【问题描述】:

我正在努力显示Stopwatch 并且计时器正在正常运行,但是当计时器正在运行并且我将应用程序置于后台时,当应用程序进入前台时,UI 被阻止并且没有任何点击事件工作.

这是我的核心代码sn-p:

this.interval = this.interval ? this.interval : setInterval(async () => {
      this.setState((state, props) => ({ elapsed: new Date() - state.startTime - state.pausedTime }))
    }, 1)

如果我遗漏任何东西,请告诉我。

建议赞赏 谢谢

【问题讨论】:

    标签: react-native timer state setinterval setstate


    【解决方案1】:

    你应该熟悉:https://facebook.github.io/react-native/docs/timers

    尤其是:InteractionManager.requestAnimationFrame(<function>)。这将为您提供不挂起 UI 线程的正确方法,例如

    InteractionManager.requestAnimationFrame(function() {
      this.setState({ elapsed: new Date(), ...}));
      ...
    });
    

    【讨论】:

      【解决方案2】:

      我错误地将间隔传递为1,但它应该是1000 ms。 谢谢大家。

      【讨论】: