vue.router router.replace点两次返回问题及解决方案

三个页面a , b , c , a页面router.push跳转至b,b再router.push跳转至c,c使用$router.replace("b")回到b,然后点击b页面的返回键,需要点击两次才能回到a页面。
通过进一步的观察发现,第一次点击其实并不是没有反应,而是页面返回到了首次的b页面。
这就是说,在C页面使用replace替换掉的是C页面的路由,C页面之前的B页面历史记录还存在。
要c保持router.replace至b方式不变,b页面返回键点击一次正常返回a页面
解决方法:使用replace方法之后,再使用router.go(-1)方法返回一次就可以。
例:
    this.$router.replace({name:'b'})
    this.$router.go(-1)
12
router.push、router.replace、router.go的区别
1.this.$router.push()
描述:跳转到不同的url,但这个方法会向history栈添加一个记录,点击后退会返回到上一个页面。
2.this.$router.replace()
描述:同样是跳转到指定的url,但是这个方法不会向history里面添加新的记录,点击返回,会跳转到上上一个页面。上一个记录是不存在的。
3.this.$router.go(n)
相对于当前页面向前或向后跳转多少个页面,类似 window.history.go(n)。n可为正数可为负数。
例:
this.$router.go(-1)  // 返回上个页面

posted @ 2019-06-11 14:43  飞晨信息  阅读(4543)  评论(0编辑  收藏  举报