微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Vue-router:如何在历史堆栈中返回两条相同的路由

如何解决Vue-router:如何在历史堆栈中返回两条相同的路由

我使用的是 Vue 2.x。

一个帖子页面。当我单击帖子页面中的按钮时,我会转到编辑页面。当我点击编辑页面上的提交时,我使用了 this.$route.replace(link_to_post_page) 从历史堆栈中删除编辑页面,并推送帖子页面

所以现在我的历史堆栈中有两条相同的路线(帖子页面)。

问题是,当我点击浏览器的后退按钮时,我转到了同一个页面,也就是帖子页面。对于用户来说,这是一个非常不自然的页面流,我想修复它。

我已经研究了 6 个小时的解决方法,但我没有找到解决方案。

我的第一次尝试是使用导航卫士。但是 Navigation Guards 只在路线改变时起作用。就我而言,路线不会改变。

我也尝试过使用 window.history.onPopState 事件侦听器,但也失败了,因为在使用 window.history.onPopState 时我无法操纵路由。

非常感谢您的帮助。谢谢。

附言 Stack Overflow 上最相似的问题是这个 vue-router: skip page when using browser back button 但它根本没有回答我的问题。我已经检查了其他问题,但他们也没有回答我的问题。

解决方法

为什么不回到历史而不是推动新的 /edit 路线?

步骤 路由堆栈
/post ['post']
-> 点击“编辑”按钮
/edit ['post','edit']
-> this.$router.back()
/post ['post','edit']

这样做的缺点是用户仍然可以手动前进到/edit页面。
但如果他们转到另一个页面,它将覆盖接下来的步骤(堆栈中上面的 /edit 路由)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?