如何从 Vue-router 历史记录中删除(上一个条目)?

sve*_*ema 7 vue-router

我想删除 Vue-Router 中以前的历史记录条目,这可能吗?该解决方案必须在 Vue-Router 4.x 中工作,最好也能在 3.x 中工作。

我在这里实现的场景是用户执行以下操作:

 pageA -> pageA:edit -> pageB
Run Code Online (Sandbox Code Playgroud)

当在 pageB 上点击“返回”时,我想转到 pageA(常规,非编辑)。

我知道我可以不推送页面A:edit 页面的历史记录,而是简单地进行替换。然而,感觉更自然的是,当返回 A:edit 页面时,您将返回到常规非编辑页面(beforeUpdate 路由防护中已经检查了更改,因此已涵盖)。

sve*_*ema 5

实际上,API 提到不可能清除(我从中推断也可以从中删除)会话历史记录。全文:

“没有办法清除会话历史记录或禁用非特权代码的后退/前进导航。最接近的可用解决方案是 location.replace() 方法,该方法用提供的 URL 替换会话历史记录的当前项目。”

https://developer.mozilla.org/en-US/docs/Web/API/Window/history

除非有人知道方法,否则我们将不得不承认这是不可能的。

  • 我很困惑我自己没有 .pop() 方法。我最终只使用了 Replace() 并构建了一个自定义导航数组,这感觉就像重新发明轮子。 (2认同)