vue3路由导航守卫监听页面跳转
时间: 2023-11-16 16:07:44 浏览: 177
Vue3中的路由导航守卫可以通过创建路由实例时传入的`beforeEach`、`beforeResolve`和`afterEach`函数来实现监听路由变化和拦截操作。具体实现方法如下:
```javascript
import { createRouter, createWebHistory } from 'vue-router';
const router = createRouter({
history: createWebHistory(),
routes: [...]
});
router.beforeEach((to, from, next) => {
// 在跳转之前进行拦截操作
// to: Route: 即将要进入的目标 路由对象
// from: Route: 当前导航正要离开的路由
// next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。
// next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。
// next(false): 中断当前的导航。如果浏览器的 URL 改变了 (可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。
// next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。
});
router.beforeResolve((to, from, next) => {
// 在跳转之前进行拦截操作,与beforeEach类似,但是在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后,解析守卫就被调用。
});
router.afterEach((to, from) => {
// 在跳转之后进行操作
});
export default router;
```
阅读全文