Vue之路由守卫实现不能后退的问题

前言

  路由守卫,顾名思义:在路由跳转的时候起到一定的保护作用。比如说:跳转主界面的时候先去登录,登录成功之后才可以进入主界面。就可以使用路由守卫,但是小编今天想要分享的是路由守卫的另一个用处。

需求分析

  假设我现在有A、B、C、D、E、F、G7个界面,在A、B、C三个界面的时候可以正常返回上一个界面,即由A到B到C,也可以由C到B到A,但是从D开始,D可以到E,E可以到F,F可以到G,但是G不能返回F,F不能返回E,E不能返回到D,D不能返回到C,当我在D、E、F、G界面的时候,按手机上的返回键返回到首页,甚至是退出系统。
  PS:有点绕,简单说,就是前三个界面可以返回到上一个界面,后四个界面不能返回到上一个界面,如果按手机上的返回键,只能返回到首页或者是退出这个系统。

需求实现

 思路一:使用replace代替push

  前3个界面可以正常使用push将路由推进去,这样可以正常返回,后面不能返回的时候可以使用replace代替push,这样就不会存上一个路由了,也就返回不了了。

this.$router.replace('D')

  实现效果:第5个界面的确返回不了第4个界面,但是按手机上的返回键的时候,直接就到了第2个界面(因为还存着第2个界面的路由)。

 思路二:使用路由守卫

  利用路由守卫中的函数,实现从那个界面离开跳到那个界面的时候,让他定位到首页。

router.beforeEach((to, from, next) => {
  const fromRoute = ['D','E','F','G']
  const nextRoute = ['B','C']
  if (fromRoute.indexOf(from.name) >= 0){
    if(nextRoute.indexOf(to.name) >=0 ){
      router.replace({ name:'A'})
    }     
  }
  next();
});

  实现效果:实现了自己的需求。

总结

  这次用到了路由守卫,不知道大家还有没有其他的方法呢?比如说禁用手机上的返回键之类的,欢迎交流分享啊!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值