javascript - 后退按钮的确认框 - ReactJs
问题描述
我已将以下代码用于浏览器后退按钮单击的确认框。我正在使用没有哈希的路由。
window.history.pushState(null, null, window.location.pathname);
window.addEventListener("popstate", this.onBackButtonClick);
onBackButtonClick = (event) => {
debugger;
event.preventDefault();
this.goBackButtonHandler();
};
goBackButtonHandler = () => {
if (this.state.isEditDirty) {
this.setState({ showDirtyDialog: true });
} else {
window.history.back();
}
};
我面临以下两种情况
- 我为文本字段脏了多次绑定 pushstate 和 popstate。因此,当我单击浏览器后退按钮时,历史记录会更改,但 url 不会更改。
- 当我在用户输入文本字段时只绑定一次时,解决方案按预期工作。但是第一次显示确认框并防止返回。第二次,即使是确认框也显示在后面加载的页面。
解决方案
推荐阅读
- javascript - 管理员帐户上的 Facebook 登录警告问题
- python - 打印问题(嵌套循环)(初级)(可能)
- python - 模拟时生成的响应在 python 测试中不正确
- node.js - JEST 与 Supertest 获取实例已在使用错误 - 需要重新启动整个测试服务器
- javascript - How to access object with req.body?
- julia - 计算二次公式时的参数错误
- deep-learning - Best way to handle batch during training and inference in Pytorch with GPU
- python - multiple combinations of one column based on another
- parse-platform - 从 cURL 调用云代码时设置用户(用于测试)
- collision-detection - speed increases after elastic collision in 2d?