setInterval中的setState导致挂起应用程序|反应本机

时间:2019-12-05 06:51:56

标签: react-native timer state setinterval setstate

我正在尝试显示Stopwatch并且计时器正常运行,但是当计时器运行并且我将应用程序置于后台时,然后当应用程序进入前台时,UI被阻止并且没有点击活动正常。

这是我的核心代码段:

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

如果我错过了任何东西,请让我知道。

建议表示赞赏 谢谢

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

我将间隔作为1传递了一个错误,但是应该是1000毫秒。 谢谢大家。