简述vue-router 路由钩子函数是什么?执行顺序是什么?

Vue-Router的路由钩子函数是在路由跳转的不同阶段执行的函数,用于在路由发生变化时执行特定的操作或逻辑。这些钩子函数允许开发者在路由进入、离开或更新时添加自定义行为。

Vue-Router的路由钩子函数可以分为以下几类:

  1. 全局钩子函数

    • beforeEach:在路由跳转之前执行,可以用于进行权限判断、加载数据等操作。该函数接收三个参数:to(即将进入的路由对象)、from(当前导航即将离开的路由对象)和next(一个必须调用的函数,用于解析钩子)。
    • beforeResolve(2.5+):在路由被解析之后,但在组件被渲染之前执行。
    • afterEach:在路由跳转之后执行,通常用于进行页面跳转后的收尾工作,如页面标题的更新等。
  2. 路由独享的钩子函数

    • beforeEnter:在路由配置中定义,只在进入该路由时执行。
  3. 组件内的钩子函数

    • beforeRouteEnter:在路由进入之前被调用,此时组件实例还未被创建,不能访问this
    • beforeRouteUpdate(2.2+):在当前路由改变,但是该组件被复用时调用,如路由参数变化时。
    • beforeRouteLeave:在离开当前路由时调用。

执行顺序

  1. 导航被触发。
  2. 在失活的组件里调用beforeRouteLeave守卫。
  3. 调用全局的beforeEach守卫。
  4. 在重用的组件里调用beforeRouteUpdate守卫(2.2+)。
  5. 在路由配置里调用beforeEnter
  6. 解析异步路由组件。
  7. 在被激活的组件里调用beforeRouteEnter
  8. 调用全局的beforeResolve守卫(2.5+)。
  9. 导航被确认。
  10. 调用全局的afterEach钩子。

这些钩子函数允许开发者在路由的不同阶段添加自定义逻辑,从而实现更复杂的路由导航控制和组件状态管理。

相关推荐
SoaringHeart25 分钟前
Flutter进阶:基于 EasyRefresh 的下拉刷新封装 n_easy_refresh_mixin.dart
前端·flutter
IT_陈寒2 小时前
Vite的热更新突然不香了,排查三小时差点砸键盘
前端·人工智能·后端
子兮曰3 小时前
Agency-Agents 深度解析:400+ AI 专家的"梦之队"如何重塑开发工作流
前端·后端·vibecoding
山河木马3 小时前
渲染管线-计算得到gl_Position(顶点着色器)之后续GPU流程
javascript·webgl·图形学
竹林8183 小时前
用 The Graph 查询链上数据实战:从手搓 RPC 到 Subgraph,我的 NFT 项目数据加载快了 10 倍
前端·javascript
妙码生花4 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十九):点选验证码代码逐行目检
前端·后端·go
Awu12274 小时前
⚡从零开发 Agent CLI(五)实现一个可治理、可扩展的工具系统
前端·人工智能·claude
咪库咪库咪5 小时前
Vue3-生命周期
前端
莪_幻尘5 小时前
你的 AI Skill 越多越蠢?Token 上下文爆炸的求生指南
前端·ai编程
lichenyang4536 小时前
从 has.echo 到异步 API 注册表:一次 ASCF API 回调不触发的排查复盘
前端