vue.router中replace需要返回两次问题及解决方案

最近移动端的路由跳转遇到的一些问题 在这里 分享下------

问题:

现有三个页面a , b , c , 递进关系,a页面router.push跳转至b,b再router.push跳转至c,c使用$router.replace()回到b,然后点击b页面的返回键,需要点击两次才能回到a页面

需求:

c保持router.replace至b方式不变,b页面返回键点击一次正常返回a页面

解决方法:

使用replace方法之后,再使用router.go(-1)方法返回一次就可以。
例:

this.router.replace({name:'b'})
this.router.go(-1)

 

原理:

先解析一下几种页面跳转方式的不同,

router.push : 跳转到新的页面,向history栈添加新一个新纪录,点击返回,返回到上一级页面。
router.replace: 打开新的页面,不会像history添加新纪录,而是直接替换掉当前记录。
router.go: 在history有记录的情况下,前进后退相应的页面。

页面的跳转记录就是:a->b->c->b
页面的堆栈记录则是:a->b->b
那么返回的时候路线就是b->b->a,相当于b页面有两个,但由于b页面是一模一样的,所以视觉上是觉得点了两次返回键。
那么解决的思路就很清晰了,减少history中的b的记录,就是在用b替换c页面记录同时,回退一页,记录就变成a->b,返回的时候自然是直接回到a。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值