Vue实现路由监
Vue 实现路由监听的方法
在 Vue 项目中,可以通过 Vue Router 提供的导航守卫或监听 $route 对象来实现路由监听。以下是几种常见的实现方式:
使用全局前置守卫
通过 beforeEach 可以监听路由跳转前的行为,适合全局路由拦截或权限控制。

router.beforeEach((to, from, next) => {
console.log('路由从', from.path, '跳转到', to.path);
next(); // 必须调用 next() 继续导航
});
使用组件内的守卫
在组件中通过 beforeRouteEnter、beforeRouteUpdate 或 beforeRouteLeave 监听路由变化。

export default {
beforeRouteEnter(to, from, next) {
console.log('组件路由进入前');
next();
},
beforeRouteLeave(to, from, next) {
console.log('组件路由离开前');
next();
}
};
监听 $route 对象
在 Vue 组件中通过 watch 监听 $route 的变化,适用于响应路由参数变化。
export default {
watch: {
'$route'(to, from) {
console.log('路由变化:', from.path, '->', to.path);
}
}
};
使用路由的 afterEach 钩子
通过 afterEach 可以在路由跳转完成后执行逻辑,无需调用 next()。
router.afterEach((to, from) => {
console.log('路由跳转完成:', from.path, '->', to.path);
});
注意事项
- 全局守卫:适合统一处理逻辑(如登录验证),但需避免过度拦截。
- 组件守卫:适用于特定组件的路由逻辑(如表单未保存提示)。
- 性能优化:频繁的路由监听可能影响性能,必要时通过
debounce优化。
以上方法可根据实际需求选择或组合使用。






