【发布时间】:2018-06-10 14:06:28
【问题描述】:
在我的应用程序中,所有列表页面上都有过滤器。 现在根据要求,我想在浏览器后退按钮上保留应用的过滤器。 例如说用户在销售列表页面上应用了过滤器。 之后,他点击一条记录进入销售编辑页面。 现在,如果用户点击浏览器后退按钮,那么那些应用的过滤器应该保留。 为了做到这一点,我在下面做了。 在销售列表页面上,
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();
}
}
使用上面的代码可以正常工作,但是当返回按钮时,它会调用 lis 页面 api (this.loadList) twise。
请提出一些新的解决方案或对现有解决方案进行修改。
谢谢。
【问题讨论】:
-
您可以使用 localstorage 保存过滤器值,当用户再次返回同一页面时,从 localstorage 获取保存的值并将它们传递给您正在调用的 api
标签: javascript reactjs react-native react-router react-redux