位置: IT常识 - 正文

走进Vue【四】导航守卫和路由原信息详解(vue导航解析流程)

编辑:rootadmin
走进Vue【四】导航守卫和路由原信息详解 文章目录🌟前言🌟什么是导航守卫?🌟全局前置守卫🌟全局解析守卫🌟全局后置钩子🌟路由独享的守卫🌟组件内的守卫可用的配置 API使用组合 API🌟完整的导航解析流程🌟路由元信息🌟写在最后🌟JSON包里写函数,关注博主不迷路🌟前言

推荐整理分享走进Vue【四】导航守卫和路由原信息详解(vue导航解析流程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue教学视频教程,vue导航解析流程,vue导入功能,vue导航实现,vue实现导入导出,导入vue.js,vue实现导入导出,vue ui导入项目,内容如对您有帮助,希望把文章链接给更多的朋友!

哈喽小伙伴们,上一期给大家总结了一下vue-router的基础知识和用法,也带着大家做了一些小案例;不知道小伙伴们联系的怎么样呢?私下也收到了好多小伙伴的私信和评论,,和大家一起共同学习进步真的很开心。今天博主继续咱们之前的走进Vue,来说一下vue-router当中的导航守卫的一些知识;一起来看下吧。

🌟什么是导航守卫?

“导航”表示路由正在发生改变。

正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的,或者组件级的。 记住参数或查询的改变并不会触发进入/离开的导航守卫。你可以通过观察 $route 对象来应对这些变化,或使用beforeRouteUpdate 的组件内守卫。

vue-router官方文档(Vue3写法)

🌟全局前置守卫

你可以使用 router.beforeEach 注册一个全局前置守卫:

const router = createRouter({ ... })router.beforeEach((to, from) => { // ... // 返回 false 以取消导航 return false})

当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航在所有守卫 resolve 完之前一直处于等待中。

走进Vue【四】导航守卫和路由原信息详解(vue导航解析流程)

每个守卫方法接收三个参数:

to: Route: 即将要进入的目标 路由对象from: Route: 当前导航正要离开的路由next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。next(false): 中断当前的导航。如果浏览器的 URL 改变了 (可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到from路由对应的地址。next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。你可以向 next 传递任意位置对象,且允许设置诸如 replace: true、name: 'home' 之类的选项以及任何用在 router-link 的to prop 或 router.push 中的选项。next(error): (2.4.0+) 如果传入 next 的参数是一个 Error 实例,则导航会被终止且该错误会被传递给 router.onError() 注册过的回调。

确保 next 函数在任何给定的导航守卫中都被严格调用一次。它可以出现多于一次,但是只能在所有的逻辑路径都不重叠的情况下,否则钩子永远都不会被解析或报错。这里有一个在用户未能验证身份时重定向到/login 的示例:

router.beforeEach(async (to, from) => { if ( // 检查用户是否已登录 !isAuthenticated && // ❗️ 避免无限重定向 to.name !== 'Login' ) { // 将用户重定向到登录页面 return { name: 'Login' } } })

如果遇到了意料之外的情况,可能会抛出一个 Error。这会取消导航并且调用 router.onError() 注册过的回调。 如果什么都没有,undefined 或返回 true,则导航是有效的,并调用下一个导航守卫 以上所有都同 async 函数 和 Promise 工作方式一样:

router.beforeEach(async (to, from) => { // canUserAccess() 返回 `true` 或 `false` const canAccess = await canUserAccess(to) if (!canAccess) return '/login'})

可选的第三个参数 next

在之前的 Vue Router 版本中,也是可以使用 第三个参数 next 的。这是一个常见的错误来源,可以通过 RFC 来消除错误。然而,它仍然是被支持的,这意味着你可以向任何导航守卫传递第三个参数。在这种情况下,确保 next 在任何给定的导航守卫中都被严格调用一次。它可以出现多于一次,但是只能在所有的逻辑路径都不重叠的情况下,否则钩子永远都不会被解析或报错。这里有一个在用户未能验证身份时重定向到/login的错误用例:

// BADrouter.beforeEach((to, from, next) => { if (to.name !== 'Login' && !isAuthenticated) next({ name: 'Login' }) // 如果用户未能验证身份,则 `next` 会被调用两次 next()})

下面是正确的版本:

// GOODrouter.beforeEach((to, from, next) => { if (to.name !== 'Login' && !isAuthenticated) next({ name: 'Login' }) else next()})🌟全局解析守卫

你可以用 router.beforeResolve 注册一个全局守卫。这和 router.beforeEach 类似,因为它在 每次导航时都会触发,但是确保在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后,解析守卫就被正确调用。这里有一个例子,确保用户可以访问自定义 meta 属性 requiresCamera 的路由:

router.beforeResolve(async to => { if (to.meta.requiresCamera) { try { await askForCameraPermission() } catch (error) { if (error instanceof NotAllowedError) { // ... 处理错误,然后取消导航 return false } else { // 意料之外的错误,取消导航并把错误传给全局处理器 throw error } } }})

router.beforeResolve 是获取数据或执行任何其他操作(如果用户无法进入页面时你希望避免执行的操作)的理想位置。

🌟全局后置钩子

你也可以注册全局后置钩子,然而和守卫不同的是,这些钩子不会接受 next 函数也不会改变导航本身:

router.afterEach((to, from) => { sendToAnalytics(to.fullPath)})

它们对于分析、更改页面标题、

本文链接地址:https://www.jiuchutong.com/zhishi/299541.html 转载请保留说明!

上一篇:五、CNN-LSTM数据驱动模型(cnn数据集)

下一篇:[深度学习] 基于切片辅助超推理库SAHI优化小目标识别

  • 计算机5大类分类标准(计算机大类分流有哪些)

    计算机5大类分类标准(计算机大类分流有哪些)

  • 苹果11有什么特点(苹果11有什么特色更能)

    苹果11有什么特点(苹果11有什么特色更能)

  • 有页眉页脚的空白页怎么删除不掉(有页眉页脚的空白页)

    有页眉页脚的空白页怎么删除不掉(有页眉页脚的空白页)

  • qq删了评论对方知道吗(qq删了评论)

    qq删了评论对方知道吗(qq删了评论)

  • 2016年苹果发布了什么手机(2016年苹果发布的产品)

    2016年苹果发布了什么手机(2016年苹果发布的产品)

  • 被加入黑名单还能添加好友吗(被加入黑名单还能看见对方头像换了)

    被加入黑名单还能添加好友吗(被加入黑名单还能看见对方头像换了)

  • gopro可以直播吗(gopro可以直播吗?)

    gopro可以直播吗(gopro可以直播吗?)

  • 27w和18w快充的区别(用27w的快充冲18w的手机会咋样)

    27w和18w快充的区别(用27w的快充冲18w的手机会咋样)

  • 总线主要由什么三部分组成(总线主要由什么决定的)

    总线主要由什么三部分组成(总线主要由什么决定的)

  • p30pro红外传感器有什么用(华为p30 pro红外传感器是干什么的)

    p30pro红外传感器有什么用(华为p30 pro红外传感器是干什么的)

  • 拼多多保留15个团什么意思(拼多多保留15个好友)

    拼多多保留15个团什么意思(拼多多保留15个好友)

  • 淘宝淘小铺怎么开通(淘宝淘小铺怎么关闭)

    淘宝淘小铺怎么开通(淘宝淘小铺怎么关闭)

  • 图片不能大于500k怎么弄(图片不能大于5M怎样调整)

    图片不能大于500k怎么弄(图片不能大于5M怎样调整)

  • oppor17时间为什么竖着(oppor17手机上的时间显示没有了怎么办)

    oppor17时间为什么竖着(oppor17手机上的时间显示没有了怎么办)

  • 华为p30是双卡双待双通吗(华为p30手机是双卡双待手机吗?)

    华为p30是双卡双待双通吗(华为p30手机是双卡双待手机吗?)

  • 金士顿耳机有驱动吗(金士顿耳机驱动官网)

    金士顿耳机有驱动吗(金士顿耳机驱动官网)

  • 面对面快传苹果和安卓(面对面快传苹果怎么传软件)

    面对面快传苹果和安卓(面对面快传苹果怎么传软件)

  • 苹果手机怎么改时间24小时(苹果手机怎么改时间和日期)

    苹果手机怎么改时间24小时(苹果手机怎么改时间和日期)

  • 电商app特点有哪些(电商app的发展现状)

    电商app特点有哪些(电商app的发展现状)

  • 爱奇艺如何查询百度钱包交易凭证(爱奇艺如何查询账号)

    爱奇艺如何查询百度钱包交易凭证(爱奇艺如何查询账号)

  • 苹果电脑怎么打开EXE文件?MAC系统上打开exe格式文件方法介绍(苹果电脑怎么打顿号)

    苹果电脑怎么打开EXE文件?MAC系统上打开exe格式文件方法介绍(苹果电脑怎么打顿号)

  • 官方自带YOLOv5的半自动标注方法(yolov5 ios)

    官方自带YOLOv5的半自动标注方法(yolov5 ios)

  • java-文件上传-excel存入数据库全代码及流程(附前端代码)(java上传文件 multipartfile)

    java-文件上传-excel存入数据库全代码及流程(附前端代码)(java上传文件 multipartfile)

  • 业务招待费福利费怎么算超支
  • 新办企业购置设备怎么抵税
  • 企业所得税营业收入和增值税销售收入
  • 太阳能发电开票编码
  • 专利年费入什么会计科目
  • 油费补助记什么科目
  • 小企业会计准则和企业会计准则的区别
  • 小企业销售商品因批量原因给予客户的商业折扣
  • 电商一定要注册公司吗
  • 事业单位专项资金的管理要求
  • 预提返利的会计处理
  • 小型微利企业减按25%计算应纳税所得额
  • 不动产进项税额抵扣最新通知2023
  • 企业合并会计处理方法研究论文
  • 合伙企业可以弥补以前年度亏损吗
  • 特殊业务分录
  • 加盟费返款怎么入账
  • 进项为13%,销售时是否可按9%
  • 产品预付款合同如何填写
  • 净资产和净资本和营业收入
  • 公司食堂支出计入什么科目
  • 文件校验有什么用
  • 本期填写的适用3减1政策的本期发生额大于
  • smss.exe是干嘛的
  • 代开的发票没有人名行不行?
  • 光纤布线有什么作用
  • 赠品没有收到
  • MacOS Big Sur 11.3网页怎么设置时间限制?
  • nicconfigsvc.exe - nicconfigsvc是什么进程 有什么用
  • 数据库olap
  • 最早的操作系统被称为什么操作系统
  • PHP:parse_ini_file()的用法_Filesystem函数
  • 企业所得税具体纳税筹划案例
  • 股东已转让股权还可以追究出资吗
  • wordpress文章分页插件
  • 我国关税税则设有
  • thinkphp查询版本号
  • thinkphp try catch
  • 创建javascript函数
  • rest for api
  • vue高级函数
  • c罗my eyes never lie
  • Vue3中的pinia使用(收藏版)
  • chkdsk.exe/f命令
  • 印花税申报一直显示办理中什么意思
  • 帝国cms适合建什么站
  • 出差托运行李公司报销吗
  • 企业管理费会计怎么做账
  • 普通的增值税
  • 合并资产负债表图片
  • 工商企业年报网上申报流程
  • mysql的密码忘了
  • mysql密码忘了咋办
  • 金税四期上线后对保险
  • 税控系统技术维护费会计处理
  • 固定资产一次性加速折旧
  • 安装生产流水线工程领用原材料
  • 资产负债表中应付职工薪酬是负数
  • 销售方开红字发票需要什么信息
  • 不验旧能领购发票吗
  • sql如何实现
  • mysql字段超长
  • centos 6.5下 mysql-community-server. 5.7.18-1.el6安装
  • windowsxp显卡驱动在哪个位置
  • Ubuntu Server 11.04安装GNOME 3的方法
  • linux 解压.z
  • u盘装系统软件哪个好
  • linux中使用bash是什么意思
  • 虚拟网卡在哪里设置
  • 查找linux
  • vmware怎么配置网络
  • win7系统和win8系统哪个好用
  • jquery常用操作
  • 详谈左晖
  • fiori开发
  • 焦点问题是什么
  • 深圳地税电子税务局
  • 贵阳税务官网登录
  • 呼伦贝尔清欠办电话
  • 北京国家税务局总局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设