在我的应用程序中,我想在浏览器后退按钮事件中保留应用的过滤器。
为了做到这一点,我做了以下代码。
componentWillMount() {
const { list, checkReportClose, updateReportCloseStatus } = this.props;
const { inPopState } = this.state;
window.onpopstate = () => {
if (!_.isEmpty(list)) {
this.setState({ filters: JSON.parse(list.input.filters), inPopState: true}, this.loadList);
}
}
if(!inPopState && inPopState != undefined && checkReportClose == false) {
this.loadList();
}
}
如上所述,当我通过按回按钮返回此页面时,它将检查window.onpopstate
并处理过滤器并调用loadlist
api。我正在将状态inPopState
更新为true
。
现在您可以看到我是否正在检查inPopState
,如果它是false
,那么只有loadList
api调用。但就我而言,即使我正在更新状态,它也会调用loadList
API两次。
我想检查条件是否超过window.onpopstate
,如果是,那么loadlist
将使用没有过滤器的过滤器。