问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

18、 vue-router导航解析及钩子函数

发布网友 发布时间:2022-09-01 05:38

我来回答

1个回答

热心网友 时间:2023-01-23 16:34

问题:当使用路由参数时,例如从 /content?id=1 到 content?id=2,此时原来的组件实例会被复用。这也意味着组件的生命周期钩子不会再被调用,此时vue应该如何响应路由参数 的变化?

复用组件时,想对路由参数的变化作出响应的话, 可以watch (监测变化) $route 对象

或者使用 2.2 中引入的 beforeRouteUpdate 守卫:

1、导航被触发。
2、在失活的组件里调用离开守卫。
3、调用全局的 beforeEach守卫。
4、在重用的组件里调用 beforeRouteUpdate守卫 (2.2+)。
5、在路由配置里调用beforeEnter。
6、解析异步路由组件。
7、在被激活的组件里调用beforeRouteEnter。
8、调用全局的 beforeResole 守卫 (2.5+)。
9、导航被确认。
10、调用全局的afterEach 钩子。
11、触发 DOM 更新。
12、用创建好的实例调用beforeRouteEnter 守卫中传给 next 的回调函数。

1、全局守卫: router.beforeEach
2、全局解析守卫: router.beforeResolve
3、全局后置钩子: router.afterEach
4、路由独享的守卫: beforeEnter
5、组件内的守卫: beforeRouteEnter、beforeRouteUpdate (2.2 新增)、beforeRouteLeave

导航表示路由正在发生改变,vue-router 提供的导航守卫主要用来:通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。

注意:参数或查询的改变并不会触发进入/离开的导航守卫。 你可以通过 观察 $route 对象 来应对这些变化,或使用 beforeRouteUpdate的组件内守卫。

1、全局守卫:
使用 router.beforeEach 注册一个全局前置守卫:

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

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

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

确保要调用 next方法,否则钩子就不会被 resolved

2、全局解析守卫:
2.5.0 新增

在 2.5.0+ 你可以用 router.beforeResolve 注册一个全局守卫。这和 router.beforeEach 类似,区别是:在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后,解析守卫就被调用。
3、全局后置钩子
你也可以注册全局后置钩子,然而和守卫不同的是,这些钩子不会接受 next 函数也不会改变导航本身:

4、路由独享的守卫
你可以在路由配置上直接定义 beforeEnter 守卫:

这些守卫与全局前置守卫的方法参数是一样的。

5、组件内的守卫
最后,你可以在路由组件内直接定义以下路由导航守卫:
beforeRouteEnter

beforeRouteUpdate (2.2 新增)

beforeRouteLeave

注意:beforeRouteEnter 是支持给next 传递回调的唯一守卫。对于beforeRouteUpdate 和 beforeRouteLeave 来说,this 已经可用了,所以不支持传递回调,因为没有必要了:

离开守卫beforeRouteLeave:通常用来禁止用户在还未保存修改前突然离开。该导航可以通过 next(false) 来取消:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
大写数字带点怎么写 带小数点的数字怎么转换为大写 怎么将带小数点的小写转换成大写 奶水不足宝宝不够吃怎么办宝宝四个半月了母乳不够吃? 宝贝3个月, 奶水不够吃 ,怎么办? 妈妈母乳不足该如何解决宝宝的粮食问题 专科医学生大三都干什么 医学生的研究生导师怎么带学生 医学生实习几个月 河北医科大学考研分配导师吗 换了减震 右后异响没有了,我知道为什么响了 摩托车前减震器回弹快 过坑的时候 而且还有声音 像是什么有什么在里面碰... 万圣节头颅面具制作方法 幼儿园万圣节面具制作 减震器压下去回弹无力 万圣节面具制作步骤 园林园建竣工图怎么画,有哪位师傅教教我? 画园林竣工图,斜坡上有地被,应该怎么在平面图上怎么表示? 园林绿化竣工图怎么画?是平面图还是效果图? 米仁绿豆粥的做法,米仁绿豆粥怎么做好吃,米仁 胡歌演《县委大院》县长,白衬衫造型:有干部那味儿了,这是一部什么... 梦见死了猫是什么意思 科三考试靠边停车时前方已停车辆怎么办 手机号码绑定了一个不用的,怎么解除? 手机号注册的不用了怎么注销 中国人均寿命只有68.7岁,都有什么因素影响寿命呢? 以前用手机号注册的,现在那号码都不用了咋注销? 张也的《婚誓》 歌词 蚝油草菇滑炒牛肉的家常做法大全怎么做好 cf改名卡在哪买 简单介绍一下 《萧十一郎》中,逍遥侯的武功你觉得是谁教的? 小时候看过一部武侠片,有个人炼了一种可以变成一滩血行动的武功,我 报个人所得税的流程 男人的名言格言 男人经典励志名言 男人事业的经典励志名言 清蒸八宝鸡怎么做 如何更好的保护好眼睛健康? 11月18日去日本大阪、京都、东京旅行,穿什么衣服合适 11月中旬去冲绳,有什么要注意的地方 EVER到底有多少意思? Ever是啥意思 狐狸为什么叫大列巴 男装羽绒服的清洗方法有哪些 一诺千金,猜一生肖? 红酒可乐鸡翅怎么做 海尔全自动洗衣机脱水嗡嗡响不工作怎么回事 防踩踏安全基础实用知识教育 卤羊蹄怎么做好吃,香辣卤羊蹄的家常做法 如何应对校园踩踏事故