VUE导航守卫

1.导航守卫是什么?

导航守卫就是路由跳转的过程中的一些钩子函数。(路由跳转是一个大的过程,这个大的过程分为跳转前,跳转中,跳转后等过程,在每一个过程中都有一个函数,这个函数可以让你操作一些其他的事情)
比如说点击一个页面,如果未登录就跳转到登录页面,已登录就让用户正常进入使用。

2.全局路由守卫分类

router.beforeEach(全局前置守卫)

router.boforeEach((to,from,next)=>{
	//to:将要进入的目标路由对象
	//from:即将离开的目标路由对象
	//next:执行跳转的下一步钩子
	console.log(to)
	console.log(from)
	if(to.name !=='login'){//如果不是登录页面
		if(ISLOGIN){next()} //如果已经登录就跳转
		else next({name:'login'}) //否则跳转到登录页面
	}else{
		if(ISLOGIN) next({name:'/'}) //已经登录就跳转到首页
		else next() //否则跳转到登录页面
	}
})

每次路由跳转,router.boforeEach都会执行,并且接收三个参数to,from,next.
router.beforeEach就是全局路由跳转时触发执行的函数。

router.boforeResolve(全局解析守卫)

和全局前置守卫类似,区别在于:
跳转被确认之前,同时在所有组件内守卫和异步路由组件都被解析之后,解析守卫才调用。

router.afterEach(全局后置守卫)

只接受to和from,不会接收next函数,也不会改变导航本身。

3.路由独享守卫

beforeEnter

beforeEnter接收的参数与全局守卫是一致的,但是该守卫只在其他路由跳转至配置有beforeEnter路由表信息时才生效。
router配置文件内容:

path:'/login',
name:login,
component:login,
beforeEnter:((to,from,next)=>{
	console.log(to);
	console.log(from);
	next()
})

4.组件内守卫

参数都为to,from,next

beforeRouterEnter

进入该路由时执行

beforeRouterUpdate

该路由中参数发生改变时执行

beforeRouterLeave

离开该路由时执行

const Foo = {
  template: `...`,
  beforeRouteEnter (to, from, next) {
    // 在渲染该组件的对应路由被 confirm 前调用
    // 不!能!获取组件实例 `this`
    // 因为当守卫执行前,组件实例还没被创建
  },
  beforeRouteUpdate (to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
  },
  beforeRouteLeave (to, from, next) {
    // 导航离开该组件的对应路由时调用
    // 可以访问组件实例 `this`
  }
}

导航解析流程

1.导航被触发
2.在失活的组件里调用beforeRouterLeave守卫
3.调用全局的beforeEach守卫
4.在重用的组件内调用beforeRouerUpdate守卫
5.在路由配置里调用beforeEnter
6.解析异步路由组件
7.在激活的组件内调用beforeRouterEnter
8.调用全局的beforeResolve守卫
9.导航被确认
10.调用全局的afterEach钩子
11.触发DOM更新
12.调用beforeRouterEnter守卫中传给next的回调函数,创建好的组件实例会作为回调函数的参数传入。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值