vue之全局导航守卫17

title动态改变

网页标题是通过<title>来显示的, 但是SPA只有一个固定的html文件,切换不同的页面时,title并不会改变。我们可以通过window.document.title = '新的标题'来修改title的内容。

普通的修改方法

在每一个路由对应的组件.vue文件中,通过created或mounted声明周期函数,执行代码document.title='new title'进行修改即可。

缺点:当页面较多时, 这种方式不容易维护。

使用导航守卫

vue-router提供的导航守卫主要用来监听监听路由的进入和离开

vue-router提供了beforeEach、afterEach钩子函数, 它们会在路由即将改变前和改变后触发。

方法1,展示每个组件的title

在index.js中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
效果
在这里插入图片描述
在这里插入图片描述

方法2,展示每个父组件的title

在这里插入图片描述
在这里插入图片描述

效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同理
在这里插入图片描述
在这里插入图片描述

导航守卫

监听路由跳转过程,beforeEach中必须要调用next()

router.beforeEach(function(to,from,next){
//	form到to
	document.title = to.matched[0].metatitle
	next();//必须要有,且不能更名
})
  • 全局前置钩子:beforeEach(to,from,next)路由跳转之前执行

  • 全局解析钩子:beforeResolve()在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后,被调用

  • 全局后置钩子:afterEach(to,from)不会接受 next 函数,也不会改变导航本身

补充

  • 完整的导航解析流程

    1. 导航被触发。
    2. 在失活的组件里调用 beforeRouteLeave 守卫。
    3. 调用全局的 beforeEach 守卫。
    4. 在重用的组件里调用 beforeRouteUpdate 守卫。
    5. 在路由配置里调用 beforeEnter。
    6. 解析异步路由组件。
    7. 在被激活的组件里调用 beforeRouteEnter。
    8. 调用全局的 beforeResolve 守卫。
    9. 导航被确认。
    10. 调用全局的 afterEach 钩子。
    11. 触发 DOM 更新。
    12. 调用 beforeRouteEnter 守卫中传给 next 的回调函数,创建好的组件实例会作为回调函数的参数传入。
  • 路由独享守卫
    beforeEnter,进入组件时执行

  • 组件内的守卫

    • beforeRouteEnter(to, from, next)在渲染该组件的对应路由被 confirm 前调用,不能获取组件实例this,因为当守卫执行前,组件实例还没被创建
    • beforeRouteUpdate(to, from, next)在当前路由改变,但是该组件被复用时调用,可以访问组件实例 this
    • beforeRouteLeave(to, from, next)导航离开该组件的对应路由时调用,可以访问组件实例 this
  • meta(原数据):描述数据的数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我没有找到关于Vue3路由导航守卫调用接口的相关信息。Vue3的官方文档中没有提到具体的接口名称或方法来调用路由导航守卫。但是,Vue3的路由系统仍然提供了类似于Vue2的导航守卫功能,包括全局前置守卫、路由独享的守卫和组件内的守卫。 在Vue3中,你可以使用`router.beforeEach`来注册全局前置守卫,使用`beforeEnter`来定义路由独享的守卫,使用组件内的守卫来实现特定组件的导航守卫逻辑。具体的使用方法可以参考Vue3的官方文档。 请注意,由于Vue3是相对较新的版本,可能还没有完整的文档或相关资源。建议查阅Vue3的官方文档或者参考相关的社区资源来获取更详细的信息。 #### 引用[.reference_title] - *1* [vue项目路由导航守卫](https://blog.csdn.net/weixin_48730699/article/details/127491772)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [vue路由导航守卫](https://blog.csdn.net/weixin_49070186/article/details/122892362)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值