如果组件的道具更改,则在卸载后是否渲染?

时间:2019-04-25 08:08:37

标签: reactjs

我有一个在setInterval上获取数据的组件。该组件是指向另一个URL的链接的列表。

有时我在单击列表时遇到问题。在我回到列表网址之后,就会立即调用该网址。

我想可能是因为我在列表页面上启动了一个请求,单击了一个链接,然后该请求又回来了,更改了列表组件的道具,使其再次呈现。

首先,我想知道你们是否认为我就在这里。如果更改了道具,组件在卸载后是否可以渲染?

如果我是对的,如果您能给我一些如何防止这种原因的提示,我不知道。

谢谢

编辑:

class CircuitsReports extends PureComponent<any, any> {
  public componentWillUpdate() {
    console.log(this.props);
  }
  public componentDidMount() {
    const { fetchAllCircuitsReportsPage } = this.props;
    fetchAllCircuitsReportsPage();
    // const intervalId = setInterval(() => {
    //   fetchAllCircuitsReportsPage();
    // }, fetchReportSummaryTimeOut);
    // setState({ intervalId });
  }
  public componentWillUnmount() {
    const { intervalId, request } = this.props;
    clearInterval(intervalId);
    request.requestState = REQUEST_NOT_STARTED;
  }
  public onPageClick = ({
    setPageAllCircuits,
    fetchAllCircuitsReportsPage
  }) => selected => {
    setPageAllCircuits(selected);
    fetchAllCircuitsReportsPage();
  };

  public render() {
    return (
      <div>
        <PageTitle
          iconName="file text"
          // content={this.props.t("reports")}
          // subHeader={this.props.t("lastReport")}
        />
        <ReportsTable
          displayExport={true}
          reports={this.props.reports}
          request={this.props.request}
          totalItems={this.props.totalItems}
          onSort={() => true}
        />
        <Paginator
          pageCount={this.props.pageCount}
          onPageChange={this.props.onPageClick}
          selectedPage={this.props.page}
        />
      </div>

我正在以3g的慢速进行测试。当我单击一个链接时,它是有效的,但是如果我返回并快速单击另一个链接,则我认为获取未完成,因此在卸载我的comp后请求发生了变化,因此呈现了列表comp。 抱歉,我有一些问题要在这里解释。

ps:这里的一些代码只是因为我正在测试,所以不要判断我的any,any或()=> true:)

0 个答案:

没有答案