javascript - 如何处理由崩溃导致的 404 页面返回。反应路由器
问题描述
让我们假设以下场景。
我在使用我的 React 网站时,发生了崩溃,并呈现了 404 页面。此网页包含一个“返回按钮”,它应该让用户返回导航。问题是,它不能带他回到上一页,因为上一页创建了404页面,所以会陷入死循环。
我的方法是在网站崩溃之前跟踪 2 个 url。网站正常运行的地方,以及网站崩溃的地方。
url1:页面工作 url2:页面网站崩溃
我做这样的事情
if (localStorage.getItem("url1") == undefined && localStorage.getItem("url2") == undefined) {
localStorage.setItem("url1", props.history.location.pathname);
localStorage.setItem("url2", props.history.location.pathname);
}
if (localStorage.getItem("url1") != localStorage.getItem("url2") && localStorage.getItem("url1") != undefined && localStorage.getItem("url2") != undefined) {
let url2: any = localStorage.getItem("url2")?.toString();
localStorage.setItem("url1", url2);
localStorage.setItem("url2", props.history.location.pathname);
}
if (localStorage.getItem("url1") == localStorage.getItem("url2") && localStorage.getItem("url1") != undefined && localStorage.getItem("url2") != undefined) {
localStorage.setItem("url2", props.history.location.pathname);
}
这样,每当网站被重定向到 404 时。我只需在按钮中使用以下代码,该代码应该将用户带回 DID 工作的页面。
pushBackError = () => {
const { history } = this.props;
this.setState({hasError: false})
let url : any = localStorage.getItem("url1")?.toString();
history.push(url)
}
这样我就可以很好地从错误中恢复。那么那里的问题是什么?
我有一个导航标题,它有一个后退按钮,并且在每个页面中都可用(错误页面除外)。暗示如果我有以下流程
page1(包含一个history.goBack按钮)-> page2(崩溃)-> errorpage(我单击返回按钮并使用pushBackError()返回到page1)-> page1(我单击触发history.goBack的后退按钮)->由于历史堆栈已填满,因此将我返回到 errorPage。
我怎么能避免这种情况?理想的流量是
page1 -> page2(崩溃)-> errorPage -> page1(我单击返回)-> 转到 page1 之前的页面,就好像导致 page2 崩溃的导航从未发生过一样。
解决方案
推荐阅读
- mongodb - MongoDB中的边界框限制
- python - InvalidArgumentError:_MklConcatOp:输入的尺寸应该匹配
- linux - 如何在鱼壳中的每个会话中永久设置环境?
- java - 查找给定 ArrayList 的所有可能排列
, 并将它们存储在全局变量中 - php - 标题扩展问题 HTML 和 CSS?
- python - 如何返回python列表中另一个元素周围的元素?
- python - django.db.utils.IntegrityError:NOT NULL 约束失败:appname_modelName.id
- php - 在模板中使用未设置的框架变量时出现 500 错误
- iot - 如果有人点击 iot 设备,我如何在 google home 上获得通知
- sql - 如何在sql中修改json对象