导航守卫的使用

路由独享比较推荐使用

在进入组件前进行判断对方能不能进入,然后选择是放行还是阻止放行

在 Vue3 中,路由导航守卫使用方式与 Vue2 有些不同。 首先,在创建 Vue Router 实例时,需要使用 `createRouter` 方法而非 `new VueRouter` 方法。 ```js import { createRouter, createWebHistory } from 'vue-router' const router = createRouter({ history: createWebHistory(), routes: [...] }) ``` 接下来,在路由配置中,使用 `beforeRouteEnter`、`beforeRouteUpdate` 和 `beforeRouteLeave` 代替 Vue2 中的 `beforeRouteEnter`、`beforeRouteUpdate` 和 `beforeRouteLeave` 钩子函数。 ```js const routes = [ { path: '/', name: 'Home', component: Home, beforeRouteEnter(to, from, next) { // 在进入路由前执行 next() }, beforeRouteUpdate(to, from, next) { // 在路由更新前执行 next() }, beforeRouteLeave(to, from, next) { // 在离开路由前执行 next() } }, // ... ] ``` 需要注意的是,在 Vue3 中,`beforeRouteEnter` 钩子函数不能直接访问组件实例(`this`),需要使用回调函数来访问。 ```js beforeRouteEnter(to, from, next) { next(vm => { // 在进入路由后执行,可以访问组件实例 console.log(vm) }) } ``` 另外,`beforeRouteUpdate` 钩子函数只有在路由参数发生变化时才会触发。 完整示例: ```js import { createRouter, createWebHistory } from 'vue-router' const Home = { /* ... */ } const About = { /* ... */ } const router = createRouter({ history: createWebHistory(), routes: [ { path: '/', name: 'Home', component: Home, beforeRouteEnter(to, from, next) { console.log('beforeRouteEnter') next() }, beforeRouteUpdate(to, from, next) { console.log('beforeRouteUpdate') next() }, beforeRouteLeave(to, from, next) { console.log('beforeRouteLeave') next() } }, { path: '/about', name: 'About', component: About } ] }) export default router ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值