广告
返回顶部
首页 > 资讯 > 精选 >Vue路由导航守卫的示例分析
  • 881
分享到

Vue路由导航守卫的示例分析

2023-06-22 06:06:04 881人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关Vue路由导航守卫的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概念:“导航”表示路由正在发生变化vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫

这篇文章将为大家详细讲解有关Vue路由导航守卫的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

    概念:

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

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

    导航守卫:包括全局导航守卫和局部导航守卫

    一、全局守卫

    vue-router全局有三个守卫

    • router.beforeEach :全局前置守卫,进入路由之前

    • router.beforeResolve :全局解析守卫,在beforeRouteEnter调用之后调用(不常用)

    • router.afterEach :全局后置钩子,进入路由之后

    1.全局前置守卫

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

    const router = new VueRouter({ ... })router.beforeEach((to, from, next) => {// to和from都是路由实例// to:即将跳转到的路由// from:现在的要离开的路由// next:函数})
    • next: Function : 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

    • next() : 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。

    • next(false) : 中断当前的导航。如果浏览器的 URL 改变了 (可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。

    • next(‘/') 或者 next({ path: ‘/' }) : 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。你可以向 next 传递任意位置对象,且允许设置诸如 replace: true 、 name: ‘home' 之类的选项以及任何用在 router-link to proprouter.push 中的选项。

    • next(error) : (2.4.0+) 如果传入 next 的参数是一个 Error 实例,则导航会被终止且该错误会 被传递给 router.onError() 注册过的回调。

    注意:如果是next(‘/') 或者 next({ path: ‘/' }),只要带了要放行的路径,那么前面必须有判断,在

    什么时候给他放行,不然他会一直循环。

    2.全局解析守卫

    2.5.0 新增

    // 全局解析守卫 router.beforeResolve((to,from.next) => { })

    在 2.5.0+ 你可以用 router.beforeResolve 注册一个全局守卫。这和 router.beforeEach 类似,区

    别是在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后,解析守卫就被调用。

    3.全局后置钩子

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

    // 全局后置钩子 router.afterEach((to,fORM) => { })

    因为:afterEach被调用时,路由已经跳转完成,所以不需要next函数

    三、路由独享的守卫

    如果不想在全局配置路由的话,可以为某些路由单独配置守卫

    比如:mainpage页面单独配置守卫

    { path: '/mainpage', name: 'About', component: About, // 路由独享守卫 beforeEnter:(to,from,next) => { if(from.name === '/mainpage/about'){ alert("这是从about来的")    }else{ alert("这不是从about来的")    }next(); // 必须调用来进行下一步操作。否则是不会跳转的  }} },

    四、组件内的守卫

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

    • beforeRouteEnter():进入路由前

    • beforeRouteUpdate():路由复用同一个组件时

    • beforeRouteLeave():离开当前路由时

    在Product中举个例子:

    // 全局解析守卫router.beforeResolve((to,from.next) => {})// 全局后置钩子router.afterEach((to,form) => {}){path: '/mainpage',name: 'About',component: About,// 路由独享守卫beforeEnter:(to,from,next) => {if(from.name === '/mainpage/about'){alert("这是从about来的")}else{alert("这不是从about来的")}next(); // 必须调用来进行下一步操作。否则是不会跳转的}}},export default {// 组件内守卫beforeRouteUpdate被触发的条件是:当前路由改变,但是该组件被复用的时候。比如说:product/orders到product/cart这个路由,都复用了 Product.vue 这个组件,这个时候beforeRouteUpdate就会被触发。可以获取到this实例。一个完整的导航解析流程// 因为这个钩子调用的时候,组件实例还没有被创建出来,因此获取不到thisbeforeRouteEnter (to, from, next) {console.log(to.name);// 如果想获取到实例的话// next(vm=>{// // 这里的vm是组件的实例(this)// });next();},beforeRouteUpdate(to,from,next){console.log(to.name, from.name);next();},// 路由即将要离开的时候调用此方法// 比如说,用户编辑了一个东西,但是还么有保存,这时候他要离开这个页面,就要提醒他一下,还没保存,是否要离开beforeRouteLeave (to, from, next) {const leave = confirm("确定要离开吗?");if(leave) next() // 离开else next(false) // 不离开},}
    • beforeRouteUpdate被触发的条件是:当前路由改变,但是该组件被复用的时候。

    • 比如说:product/orders到product/cart这个路由,都复用了 Product.vue 这个组件,这个时候

    • beforeRouteUpdate就会被触发。可以获取到this实例。

    五、一个完整的导航解析流程

    • 导航被触发。

    • 在失活的组件(即将离开的页面组件)里调用离开守卫。 beforeRouteLeave

    • 调用全局的 beforeEach 守卫。

    • 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+)。

    • 在路由配置里调用(路由独享的守卫) beforeEnter

    • 解析异步路由组件

    • 在被激活的组件(即将进入的页面组件)里调用 beforeRouteEnter

    • 调用全局的 beforeResolve 守卫 (2.5+)。

    • 导航被确认。

    • 调用全局的 afterEach 钩子。所有的钩子都触发完了。

    • 触发 DOM 更新。

    • 用创建好的实例调用 beforeRouteEnter 守卫中传给 next 的回调函数。

    关于“Vue路由导航守卫的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

    --结束END--

    本文标题: Vue路由导航守卫的示例分析

    本文链接: https://www.lsjlt.com/news/303069.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Vue路由导航守卫的示例分析
      这篇文章将为大家详细讲解有关Vue路由导航守卫的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概念:“导航”表示路由正在发生变化vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫...
      99+
      2023-06-22
    • vue-router导航守卫的示例分析
      这篇文章将为大家详细讲解有关vue-router导航守卫的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。当做Vue-cli项目的时候需要在路由跳转前做一些验证,比...
      99+
      2022-10-19
    • Vue中的路由导航守卫导航解析流程
      目录全局前置守卫全局解析守卫全局后置钩子路由独享的守卫组件内的守卫可用的配置 API使用组合 API完整的导航解析流程正如其名,vue-router 提供的导航守卫主要用来通过跳转或...
      99+
      2023-05-16
      Vue路由导航守卫 Vue路由守卫
    • Vue Router4路由导航守卫实例全面解析
      目录前言一、什么是导航守卫二、全局前置守卫可选的第三个参数 next三、全局解析守卫四、全局后置钩子五、路由独享的守卫六、组件内的守卫可用的配置 API使用组合 API七、...
      99+
      2022-11-16
      Vue Router4路由导航 Vue Router
    • 快速理解Vue路由导航守卫
      目录一、全局守卫 1.全局前置守卫 2.全局解析守卫 3.全局后置钩子 三、路由独享的守卫 四、组件内的守卫 五、一个完整的导航解析流程 概念: “导航”表示路由正在发生变化 vue...
      99+
      2022-11-12
    • 如何分析Vue router路由守卫
      本篇文章给大家分享的是有关如何分析Vue router路由守卫,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、全局前置beforeEach当 Local Stora...
      99+
      2023-06-22
    • vue-router路由与页面间导航的示例分析
      小编给大家分享一下vue-router路由与页面间导航的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!vue-route...
      99+
      2022-10-19
    • Angular2中路由与导航的示例分析
      这篇文章主要为大家展示了“Angular2中路由与导航的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Angular2中路由与导航的示例分析”这篇文章吧...
      99+
      2022-10-19
    • Angular中路由守卫的使用示例
      这篇文章主要介绍了Angular中路由守卫的使用示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、路由守卫当用户满足一定条件才被允许进入或者离开一个路由。路由守卫场景:只...
      99+
      2023-06-06
    • Vue实现动态路由导航的示例
      目录1、导航守卫二、功能展示 三、原理四、功能实现⛵小结1、导航守卫 “导航” 表示路由正在发生改变 正如其名,vue-router 提供的导航守卫...
      99+
      2023-02-24
      Vue 动态路由导航 Vue 路由导航
    • Vue 编程式路由导航的实现示例
      目录router- link的replace属性编程式路由导航缓存路由组件两个新的生命钩子router- link的replace属性 1.作用:控制路由跳转时操作浏览器历史记录的模...
      99+
      2022-11-13
    • vue-router路由的示例分析
      这篇文章将为大家详细讲解有关vue-router路由的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。官方文档:旧版:https://github.com/vuej...
      99+
      2022-10-19
    • 一文浅析Vue中的路由和多种守卫
      4.多级路由在配置路由规则的以及路由里面进行配置下一级路由使用children:[ { } ]这种形式 routes: [{ path: '/about', compon...
      99+
      2023-05-14
      Vue
    • VueRouter进阶之导航钩子和路由元信息的示例分析
      这篇文章主要介绍了VueRouter进阶之导航钩子和路由元信息的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。导航钩子vue-rou...
      99+
      2022-10-19
    • vue中静态路由的示例分析
      这篇文章将为大家详细讲解有关vue中静态路由的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路...
      99+
      2022-10-19
    • Vue中路由跳转的示例分析
      这篇文章给大家分享的是有关Vue中路由跳转的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最近项目上需要用Vue用来做app,在Vue中使用路由时遇到下面的问题。路由设置...
      99+
      2022-10-19
    • vue-router路由模式的示例分析
      这篇文章将为大家详细讲解有关vue-router路由模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、路由模式解析要讲vue-router的路由模式,首先要...
      99+
      2022-10-19
    • vue路由守卫的三种类型分别是什么
      这篇“vue路由守卫的三种类型分别是什么”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“vue路由守卫的三种类型分别是什么”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来...
      99+
      2023-06-06
    • flutter的导航和路由使用示例详解
      目录导航和路由使用Navigator导航命名路由命名路由的局限使用路由Router同时使用Router和Navigator深度链接 Deep linking在 Android 上启用...
      99+
      2022-12-29
      flutter 导航路由 flutter 路由
    • vue中VueRouter路由基础的示例分析
      这篇文章主要介绍vue中VueRouter路由基础的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、VueRouter1、说明用 Vue.js + Vue Router 创建单页应用,感觉很自然:使用 Vu...
      99+
      2023-06-22
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作