22/09/26 vue3,路由独享组件守卫,beforeEnter

背景:
商品B页面,跳转到商品详情C页面,从C页面返回到B页面,B页面要保留进度条数据。
从非C的其他页面跳转到B页面,都不需要使用进度条数据


C页面,路由配置beforeEnter
在这里插入图片描述

从B页面跳转到C页面存储数据
import { useRoute } from ‘vue-router’;
在这里插入图片描述


参考链接:
在这里插入图片描述

Vue Router路由独享的守卫

### Vue3路由独享守卫的使用方法 在 Vue3 的 `vue-router` 版本中,独享路由守卫可以通过为特定路由定义 `beforeEnter` 守卫来实现。这种守卫仅适用于指定的路由,在该路由被访问前触发。 以下是详细的说明以及代码示例: #### 1. 配置独享路由守卫 通过在路由配置对象中添加 `beforeEnter` 属性,可以为某个具体的路由设置独享守卫。此属性是一个函数或者数组形式的多个函数[^2]。 ```javascript import { createRouter, createWebHistory } from 'vue-router'; const routes = [ { path: '/home', component: () => import('@/views/Home.vue'), beforeEnter: (to, from, next) => { console.log('进入 /home 前触发'); if (!isAuthenticated()) { alert('未授权访问!'); next('/login'); // 如果未登录,则重定向到登录页 } else { next(); // 否则继续加载目标页面 } }, }, ]; const router = createRouter({ history: createWebHistory(), routes, }); function isAuthenticated() { return false; // 这里可以根据实际逻辑判断用户是否已认证 } export default router; ``` 上述代码展示了如何为 `/home` 路由添加一个独享守卫。当尝试访问 `/home` 页面时,会先执行 `beforeEnter` 函数中的逻辑。 --- #### 2. 多个独享守卫的应用场景 如果需要在一个路由上应用多个独享守卫,可以将它们作为数组传递给 `beforeEnter` 属性。这样可以让不同的功能模块分别管理自己的验证逻辑。 ```javascript { path: '/admin', component: AdminComponent, beforeEnter: [ (to, from, next) => checkUserPermission(to, from, next), (to, from, next) => logAccessAttempt(to, from, next), ], } ``` 在这个例子中,`checkUserPermission` 和 `logAccessAttempt` 是两个独立的功能函数,分别用于权限校验和记录访问日志。 --- #### 3. 独享守卫与其他守卫的区别 - **全局守卫**:作用于所有路由切换过程,通常用来处理通用逻辑(如导航进度条、全局错误捕获等)[^3]。 - **组件守卫**:绑定在具体组件实例上的生命周期钩子(如 `beforeRouteEnter`, `beforeRouteLeave`),主要用于组件级别的数据预取或状态保存[^1]。 - **独享守卫**:只针对某一条或多条路由生效,适合做局部化的业务逻辑控制(如角色权限校验、表单提交确认等)。 --- #### 4. History 模式下的注意事项 如果项目启用了 `history` 模式而非默认的 `hash` 模式,则需要注意服务器端配置问题。因为 `history` 模式的 URL 不含 `#` 符号,直接请求这些路径可能会返回 404 错误。因此需确保后端能够正确转发所有前端路由至入口文件[^4]。 ```javascript // 使用 history 模式创建路由器实例 const router = createRouter({ history: createWebHistory(process.env.BASE_URL), // BASE_URL 可能是 '/' routes, }); ``` --- #### 总结 Vue3 中的独享路由守卫是一种强大的工具,允许开发者对某些特殊路由实施额外的安全措施或其他定制化行为。合理利用它可以提升用户体验并增强应用程序的安全性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值