路由导航守卫的用法

 

 

Vue3 的路由导航守卫Vue2 的路由导航守卫使用方法基本一致,但是在 Vue3 中使用守卫需要注意一些细节。 1. 全局守卫 在创建路由实例时,可以通过 `beforeEach`、`beforeResolve`、`afterEach` 方法来定义全局的路由导航守卫。 ```javascript import { createRouter, createWebHistory } from 'vue-router' const routerHistory = createWebHistory() const router = createRouter({ history: routerHistory, routes: [ // ... ] }) router.beforeEach((to, from, next) => { // 在进入路由前做一些处理 next() }) router.afterEach(() => { // 在路由完成后做一些处理 }) export default router ``` 2. 路由独享守卫 在定义路由时,可以通过 `beforeEnter` 方法来定义该路由的独享守卫。 ```javascript const routes = [ { path: '/foo', component: Foo, beforeEnter: (to, from, next) => { // 在进入该路由前做一些处理 next() } }, // ... ] ``` 3. 组件内守卫 在组件内,可以通过 `beforeRouteEnter`、`beforeRouteUpdate`、`beforeRouteLeave` 方法来定义组件内的路由导航守卫。 ```javascript export default { // 在组件进入路由前做一些处理 beforeRouteEnter(to, from, next) { // 在组件未创建前,this 指向的是 undefined,因此无法访问组件实例。 // 可以通过回调函数来访问组件实例。 next(vm => { // 可以通过 vm 访问组件实例 }) }, // 在组件更新路由前做一些处理 beforeRouteUpdate(to, from, next) { // 可以通过 this 访问组件实例 // 在组件更新时,组件实例已经存在,因此可以直接访问组件实例 next() }, // 在组件离开路由前做一些处理 beforeRouteLeave(to, from, next) { // 可以通过 this 访问组件实例 // 在组件离开路由时,组件实例仍然存在,因此可以直接访问组件实例 next() } } ``` 注意事项: 1. 在 `beforeRouteEnter` 中,访问不到组件实例,需要通过回调函数来访问组件实例。 2. 在 `beforeRouteUpdate` 和 `beforeRouteLeave` 中,可以直接通过 `this` 访问组件实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值