使用setInterval()时防止重新渲染ReactJS

时间:2019-01-22 09:19:31

标签: javascript reactjs performance

大家好?所以我现在正在用React开发Web,并且我需要制作一个秒表计时器,当我单击按钮时它将被播放,所以我使用setInterval()方法。但是,当我单击按钮并运行setInterval()时,我从why-did-you-update库收到了此警告,这意味着避免重新渲染。我已经使用了PureComponent,但是为什么在setInterval()运行时仍重新渲染某些组件?它使人落后,如果我使用clearInterval()方法停止setInterval,则该组件将停止重新渲染。

enter image description here

代码如下:

startTimer() {
  // Test
  this.setState(
    prevState => ({
      ...prevState,
      isSessionStarted: true,
      duration: prevState.duration,
      startedAt: Date.now() - prevState.duration
    }),
    () => {
      this.timer = setInterval(
        () =>
          this.setState(prevState => ({
            duration: Date.now() - prevState.startedAt
          })),
        1000
      );
    }
  );
}

stopTimer() {
  this.setState({ isSessionFinished: true }, () => {
    clearInterval(this.timer);
  });
}

有解决方案吗?谢谢你。

0 个答案:

没有答案