Vue路由钩子相关

路由钩子分为三种情况

  • 全局钩子:beforeEach、afterEach、beforeResolve
  • 单个路由里面的钩子:beforeEnter
  • 组件路由:beforeRouterEnter、beforeRouterUpdate、beforeRouterLeave

全局钩子

  • beforeEach: 全局前置守卫,进入路由之前
  • beforeResolve: 全局解析守卫(2.5.0之后),在 beforeRouterEnter 调用之后调用
  • afterEach 全局后置钩子,进入路由之后

路由的三个参数说明

  • to:将要进入的路由对象
  • from:将要离开的路由对象
  • next:这个参数是个函数,且必须调用,否则不能进入路由,否则页面会展示空白
// entry 入口文件 - main.js
import router from './router'
router.beforeEach((to, from, next) => {
   next(); //这玩意儿必须写,不然就锤子了
})

router.beforeResolve((to, from, next) => {
   next();
})

router.afterEach((to, from) => {
   // 全局后置钩子函数
})

路由独享守卫

为某些路由单独配置守卫

const router = new VueRouter({
	routes: [
		{
			path: '/test',
			component: RouterTestComponent,
			beforeEnter: (to, from, next) => {
				// 参数用法与全局的钩子是i一样的,调用顺序在全局前置守卫后面,所以不会被全局守卫覆盖
			}
		}
	]
})

组件内的路由守卫

  1. beforeRouterEnter:进入路由
  2. beforeRouterUpdate:路由复用同一个组件时
  3. beforeRouteLeave:离开当前路由时

触发钩子的顺序

将路由导航,keep-alive,组件生命周期钩子结合起来的,触发顺序,假设是从A组件离开,第一次进入B组件:

  1. beforeRouteLeave:路由组件的组件离开路由前钩子,可取消路由离开
  2. beforeEach:路由全局前置守卫,可用于登录验证,全局路由loading等。
  3. beforeEnter:路由独享守卫
  4. beforeRouterEnter:路由组件的组件进入路由前钩子
  5. beforeResolve:路由全局后置钩子
  6. afterEach: 路由全局后置钩子
  7. beforeCreate: 组件生命周期,不能访问 this
  8. created 组件生命周期,可以访问 this, 不能访问 dom
  9. beforeMount:组件生命周期
  10. deactivated: 离开缓存组件 A,或者触发 A 的 beforeDestroy 和 destroyed 组件销毁钩子。
  11. mounted: 访问、操作 dom
  12. activated:进入缓存组件,进入 A 的嵌套子组件
  13. 执行 beforeRouteEnter 回调函数 next;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值