setState in setInterval 导致应用程序挂起 |反应原生



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

这是我的核心代码片段:

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

如果我错过了任何东西,请告诉我。

感谢建议 谢谢

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

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

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

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

最新更新