React组件不会重新渲染

时间:2020-02-22 14:41:52

标签: reactjs

我有一个称为TOC的React组件。 TOC的render方法中的另一个组件是StatusCard。每个StatusCard都会进行GraphQL查询并显示一些数据。我需要StatusCard每隔x分钟更新一次。我猜我需要重新渲染TOC,因为页面上可能有很多StatusCard,我希望它们全部一次更新。

经过大量阅读和测试之后,我在TOC的render方法之前获得了以下代码。如您所见,我尝试了this.setStatethis.forceUpdate,但它们都不起作用。即使查询返回的数据正在更改,卡也不会更新。该页面有点像仪表板,不需要通过页面刷新来手动更新。有什么简单的方法可以做到这一点?

编辑/更新:如果TOC是父组件,并且StatusCard(子级)呈现在TOC内,在TOC上调用this.forceUpdate()this.setState(this.state)会导致StatusCard更新吗?请记住,除非调用GraphQL查询并返回新数据,否则关于StatusCard的任何更改实际上都不会更改。所以我想知道,由于StstusCard的新版本与虚拟dom中的旧版本相同,因此数据更改是否可能永远不会出现在页面上。这听起来合乎逻辑吗?

componentDidMount() {
    this.interval = setInterval(() => this.setState(this.state), 5000);
    //this.interval = setInterval(() => this.forceUpdate(), 5000);
  }
  componentWillUnmount() {
    clearInterval(this.interval);
  }

0 个答案:

没有答案