Vue中监听路由变化,来决定是否跳转页面

这段时间在用Vue做一个项目时,遇到了一个需求。用户如果没有登录,在点击导航栏按钮时,就不能进入某些页面。

以前在用原生Js写时,这个需求都是交给后端去处理的,但因为Vue来是单页面框架,所以就不需要交给后端去处理了。

最开始我是在按钮上设置了如果用户是没有登录的状态,就不执行跳转行为,但我在浏览器的URL地址栏中输入要跳转的页面地址时,就能跳转过去,没有被阻拦,最后我用了Vue中的 $router来解决。

watch: {
    $route (to, from) { //to:即将要跳转到的页面   from:即将离开的页面
      if (to.path === '/write' && this.$store.state.usertf === '1') {
        alert('想进去?没门,快滚去登录!')
        this.$router.push('/home')
        this.$emit('denglu')
      } else if (to.path === '/home') {
        this.$router.push('/home')
      }
    }
  },

在组件中用 watch来监听 $router的变化,这样不管是点击导航栏按钮还是在URL地址栏中输入地址,它都能检测到,然后再来根据要跳转哪个页面再来做出处理是否要放行的处理,这样就能实现这个需求了。

注意:只能监听子路由的路由变化,同级或者父级路由的变化是监听不到的,如果要全局监听路由变化,可以在App.vue文件中监听。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值