什么情况下会使用?
需要在路由跳转前后做处理时会使用。
主要有三种导航守卫:全局守卫、路由独享守卫、组件内守卫
需要在路由跳转做一些通用逻辑的时候可以使用全局守卫
import { createApp } from 'vue';
import {createRouter, createWebHistory} from 'vue-router';
import routerConfig from './route.config';
import App from './App';
const router = createRouter({
history: createWebHistory(),
routes: routerConfig
});
// 全局守卫
router.beforeEach((to, from) => {
console.log(`从${from.path} 跳转到 ${to.path}`);
});
createApp(App).use(router).mount('#app')
对于个别路由自己的逻辑可以使用路由独享守卫
{
path: '/user/:id',
component: User,
children: [
{
path: 'list',
component: UserList,
// return false 则不跳转
beforeEnter: () => {
return false
},
},
{
path: 'detail',
component: UserDetail
},
]
}
组件内也可以使用相应的钩子来处理跳转逻辑
// UserList.vue
<template>
<div>user-list</div>
</template>
<script>
export default {
beforeRouteEnter() {
return false;
}
};
</script>