我有一个在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:)