概念
路由守卫,官网也叫导航守卫,所谓导航,就是路由正在发生变化
路由守卫,主要就是用来通过跳转或取消的方式守卫导航,在导航过程中,有三种方式可以植入导航
全局守卫
路由独享
路由组件中
1.全局守卫:
全局前置守卫beforeEach


全局解析守卫

全局后置守卫

2.路由独享
beforeEnter

一般用处就是当不需要全局路由守卫时,只需要对一个路由规则进行守卫时使用,看具体场景,开发中,一般全局前置守卫用的比较多
3.组件内的守卫
在组件的配置选项中定义的的钩子函数
beforeRouteEnter
在组件内配置的 触发在beforeEnter之前
不能获取该组件的实例对象this,因为此守卫在执行前,组件实例还没有被创建

beforeRouteUpdate
在动态路由的时候,参数发生变化时触发

beforeRouteLeave
当离开时第一个触发
也就是导航离开这个组件的对应路由时被调用.可以访问组件实例this

守卫参数解析
每个守卫方法都接收是三个参数 to from next()
1.to
即将去的目标 通俗来说就是到哪里去
2.from
即将离开的路由 通俗来说就是从哪里来
3.next ()
是一个方法,必须调用,一定要调用这个方法来解析,执行效果依赖next方法的调用参数
注意使用时,一定要保证不要造成死循环
此函数的用法
next() 进行下一个,执行下一步
next(false) 阻止当前的导航
next(’/’)后者next({path:’/’})
跳转到一个不同的地址,当前的导航中断,跳转到一个新的导航
next(error) 如果传入的参数是一个Error实例,导航终止,并该错误会传递给router.onError()注册过的回调
网友评论