Vue路由守卫

Vue路由守卫

类别:

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

一、全局守卫:

1. 概念:
在这个守卫方法中进行全局拦截,可以设置满足某些条件(比如是否登录)
才可以进入到当前路由导向的页面
2. 设置方式:
在main.js(插件入口页面)文件中定义,有以下几个钩子函数方法

router.beforeEach() 进入路由前执行

router.beforeResolve()解析守卫:在导航被确认之前,同时在所有组件内的守卫和异步路由组件被解析之后,解析守卫就被调用

router.afterEach()导航完成时执行,里面只有to和from两个形参,没有next

在这些方法中的括号里都有一个回调函数作为执行器,这个回调函数有三参数,分别是to,from,next
to:这个参数表示要到哪里去
from:表示从哪里来
next使用时要注意逻辑严谨,不然会造成死循环
next ():这是一个方法,当你设置next()里面不传值时,表示通行
next(false)当里面传参false时表示禁止通行
next(‘/home’)当里面传的是一个路径时,不管原来导航跳往哪里,都会重定向到此路径
next(error)阻止跳转,执行router.onError()里的回调,需要先注册一个router.onError()

router.onError(error=>{
  console.log('错误信息');
})

next(()=>{ })next这里的值可以是一个回调函数,然后在这里设置路径设置重定向,或取消导航,又或者注册一个错误

例子

new Vue({
  el: '#app',
  router,store,
  components: { App },
  template: '<App/>'
},
router.beforeEach((to,from,next)=>{
  if(to.path=='/'||to.path=='/longe'){
    next();
  }else if(to.path=='/home'){
    alert('请先登录')   }}))

二、组件内守卫

beforeRouteEnter: 进入组件时

在渲染该组件的对应路由被 confirm(确定前) 前调用
不!能!获取组件实例 this,因为当守卫执行前,组件实例还没被创建

beforeRouteUpdate: 组件被复用时调用

在当前路由改变,但是该组件被复用时才调用,
举例:对于一个嵌套路由的路径,在 /foo/1 和 /foo/2 之间跳转的时候, 由于会渲染同样的 foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。如果不加这个钩子,则路由变化时页面检测不到数据变化,这里可以访问组件实例 this

beforeRouteLeave: 离开组件前

导航离开该组件的对应路由时调用,这里可以访问组件实例 this
使用:写在组件的逻辑中
这里使用函数写法

beforeRouteEnter (to, from, next) { 
			  console.log('beforeRouteEnter')
			  next()
			},
beforeRouteUpdate (to, from, next) {
			  console.log('beforeRouteUpdate')
			  next()
			 },
beforeRouteLeave (to, from, next) {
			  console.log('beforeRouteLeave')
			  next()
			}

三、路由独享守卫

beforeEnter: 进入该路由前,必须进入某个路由才会执行

例子: 在路由中进行调用
这里使用函数写法

{path: '/',
      name: 'firstlist',
      component: firstlist,
      beforeEnter(to,from,next){
      console.log('beforeEnter');
      next()}//这里注意加next()方法,给导航放行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值