当前位置: 首页 > 知识库问答 >
问题:

如何防止React在使用setInterval时重新渲染整个组件

西门飞翮
2023-03-14

我正在开发一个应用程序播放器。请看下面的图片:

进度条必须显示当前时间,但每次勾选setInterval(),我的组件都会重新呈现所有内容。这导致我的应用程序运行缓慢。

这是我的代码:

this.state = {
    currentTime: 0,
}


/// ....
const tick = 100;
setInterval(() => {
   this.setState({currentTime += tick});
}, tick);


render() {
   // This will call every tick (100ms). That's what I don't want, but if I skip it, the progress will not show the current time.
}

共有2个答案

越宣
2023-03-14

尝试使用:

  shouldComponentUpdate(nextProps, nextState) {
    return false;  
  }
司徒浩思
2023-03-14

谢谢大家。我通过将组件分离到子组件解决了我的问题。并分派到redux store,在setInterval()函数中为每个棒设置currentTime。现在它的工作就像一个魅力。

 类似资料:
  • 我从这里修改了以下组件定义,如下所示。但是,与示例不同的是,每次在组件上移动鼠标时,组件都会重新呈现。 重新渲染非常引人注目: 有人知道为什么会这样吗?

  • 我对react还比较陌生,我一直在分解一个web应用程序,并用react组件替换部分。我现在正在开发一个组件,其中包含我创建的几个不同组件。 在新组件中,我在componentDidMount函数中进行API调用,并创建子组件。乍一看,一切看起来都很完美,但当我们在其中一个子组件中进行状态更改,然后在父组件中进行更改时,子组件将其状态重置为更改之前的状态。 我知道发生了什么,州政府没有被传递给家长

  • 问题内容: 考虑下面的钩子示例 基本上,我们使用this.forceUpdate()方法强制组件在React类组件中立即重新呈现,如以下示例所示 但是我的查询是如何强制上述功能组件立即使用挂钩重新渲染? 问题答案: 可以使用或进行,因为在内部使用: 不打算在正常情况下使用,仅在测试或其他出色情况下使用。可以以更常规的方式解决这种情况。 是使用不当的例子,是异步的性能,而且不应该被强迫只是因为状态更

  • 问题内容: 我正在尝试将表示性组件与容器组件分开。我有一个和一个。容器负责触发redux操作,以根据当前用户获取适当的网站。 问题是在最初呈现容器组件之后,异步获取了当前用户。这意味着容器组件不知道它需要重新执行其函数中的代码,该代码将更新数据以发送到。我认为我需要在其props(user)之一更改时重新渲染容器组件。如何正确执行此操作? 问题答案: 您必须在方法中添加条件。 该示例用于比较对象。

  • 问题内容: 在基于多个用户上下文渲染了整个页面并提出了几个请求之后,我希望用户能够切换上下文并再次重新渲染所有内容(重新发送所有请求等)。如果我只是将用户重定向到其他地方,则一切正常: 如果使用,那么正在等待响应的请求中的某些请求将被取消,因此无法使用。此外,黑客也不起作用(什么也没有发生)。 还有另一种方法可以重新渲染页面,而无需再次手动发出所有请求吗? 问题答案: 为了进行记录,要强制angu

  • 我试图将表示组件与容器组件分开。我有一个和一个。容器负责触发redux操作,以基于当前用户获取适当的站点。 问题在于,在容器组件最初呈现之后,当前用户是异步获取的。这意味着容器组件不知道需要在其函数中重新执行代码,该函数将更新数据以发送到。我想当容器组件的一个道具(用户)发生变化时,我需要重新渲染它。如何正确地执行此操作?