前端/移动开发面试题更新 2026-08-05

请描述 Vue Router 中定义在组件内的路由守卫有哪些,并说明它们各自的触发时机。

前端/移动开发技术原理Vue Router

考察说明

考察对 Vue Router 组件内路由守卫及其触发时机的掌握程度。

回答思路

  1. 【回答框架 1】Vue Router 的组件内路由钩子主要包含三个:beforeRouteEnter、beforeRouteUpdate 和 beforeRouteLeave。它们不同于全局守卫,是定义在组件内部、与组件实例生命周期相关的守卫。
  2. 【回答框架 2】beforeRouteEnter 在路由进入该组件时调用,此时组件实例尚未创建,因此无法访问 this。如果需要访问组件实例,可以通过回调函数的参数 next(vm => {}) 获取。
  3. 【回答框架 3】beforeRouteUpdate 在当前组件被复用且路由参数变化时调用,例如从 /user/1 导航到 /user/2。此时组件实例已经存在,可以访问 this,常用于响应参数变化进行数据更新。
  4. 【回答框架 4】beforeRouteLeave 在导航离开当前组件时调用,此时组件实例可用,可以访问 this。常用于确认用户是否要离开、保存草稿或清理定时器等操作。
  5. 【关键点 1】组件内钩子有三个:beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave。
  6. 【关键点 2】beforeRouteEnter 时实例未创建,不能访问 this,但可通过 next 回调获取实例。
  7. 【关键点 3】beforeRouteUpdate 在组件复用时触发,可访问 this。
  8. 【关键点 4】beforeRouteLeave 在离开路由时触发,可访问 this。
  9. 【易错点 1】容易混淆 beforeRouteUpdate 与 beforeRouteEnter 的触发时机。
  10. 【易错点 2】在 beforeRouteEnter 中直接使用 this 会报错。