vue的路由守卫 容易理解 (必看~~~)

vue有三种,分别为:

  1. 全局守卫
  2. 路由独享守卫
  3. 组件内的守卫

一、全局守卫 常用的是:

1. 路由的前置守卫

 *  路由的前置守卫 router.beforeEach((to,from,next)=>{
 *      to -- 去哪里
 *      from -- 从哪里来
 *      next -- 下一步 (放不放行)
 *
 *  })
 *
 *  后置钩子函数  router.afterEach((to,from)=>{
 *
 *  })

接下来是用路由前置守卫实现登录的例子:

router.beforeEach((to,from,next)=>{
  // console.log('1',to,from ,next)
  //   console.log(store)
    // state.loginData是自己模拟的数据 
    // 如果没有数据并且不再登录页就跳回登录页
    if(!store.state.loginData && to.name!='login'){
        next('/login')
        return
    }
    // 如果有数据并且再登录页就进入首页
    if(store.state.loginData && to.name=='login'){
      next('/')
        return
    }
    next()
})

注:如果出现报错:
maximum call stack size exceeded 堆栈溢出 死循环

2.后置钩子函数

// router.afterEach((to,from,next)=>{
//   console.log(to)
//   console.log(from)
//   console.log(next) //没有
// })

注:后置钩子函数没有next

二、组件级的守卫

在页面中和data同级

路由进入之前
beforeRouteEnter((to,from,next){
    进入路由前什么也没触发
    所以在写的时候注意可不可以进入这个路由
	如果不可以就 next()
})
路由更新
beforeRouteUpdate((to,from,next){
    路由更新页面不变时触发
})
路由离开
beforeRouteLeave
//路由离开时触发

三、单个路由守卫

是在配置路由的地方写的,和component、name或path同一级

beforeEnter((to,from,next)=>{
    进入路由前什么也不触发
	在写的时候注意可不可以进入这个路由
	如果不可以就 next()
})

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值