什么是导航守卫

news/2024/12/2 16:38:00/

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

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

全局前置守卫

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

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

to: Route: 即将要进入的目标 路由对象

from: Route: 当前导航正要离开的路由 

next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

全局后置守卫

 

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

router.afterEach((to, from) => {

            没有next方法next:undefined

})

路由独享守卫

你可以在路由配置上直接定义 beforeEnter 守卫:

const router = new VueRouter({

             routes: [

               {

                 path: '/foo',指定独享守卫路由位置

                 component: Foo,

                 beforeEnter: (to, from, next) => {

                    // ...

                 }

                }

               ]

})

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

组件内的守卫

 const Foo = {

  template: `...`,

  beforeRouteEnter(to, from, next) {

    // 在渲染该组件的对应路由被 confirm 前调用

    // 不!能!获取组件实例 `this`

    // 因为当守卫执行前,组件实例还没被创建

  },

  beforeRouteUpdate(to, from, next) {

    // 在当前路由改变,但是该组件被复用时调用

    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,

    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。

    // 可以访问组件实例 `this`

  },

  beforeRouteLeave(to, from, next) {

    // 导航离开该组件的对应路由时调用

    // 可以访问组件实例 `this`

  }

}

  1. beforeRouteEnter 守卫 不能 访问 this,因为守卫在导航确认前被调用,因此即将登场的新组件还没被创建。
  2. 不过,你可以通过传一个回调给 next来访问组件实例。在导航被确认的时候执行回调,并且把组件实例作为回调方法的参数。
  3. 注意 beforeRouteEnter 是支持给 next 传递回调的唯一守卫。对于 beforeRouteUpdate 和 beforeRouteLeave 来说,this 已经可用了,所以不支持传递回调,因为没有必要了。
  4. 还未保存修改前突然离开。该导航可以通过 next(false) 来取消。

http://www.ppmy.cn/news/281819.html

相关文章

导航寻路系统

1、导航寻路系统 Unity中的导航寻路系统是能够让我们在游戏世界当中,让角色能够从一个起点准确的到达另一个终点,并且能够自动避开两个点之间的障碍物选择最近最合理的路径进行前往,Unity中的导航寻路系统的本质,就是在A星寻路算法…

基于Android的旅游导航系统

我们所研发的基于android的旅游导航系统,可以方便用户在旅游景点,随时查看景点的介绍,相关视频介绍,图片浏览,和歌曲欣赏。本项目旨在给用户提供一个,友好,方便的旅游导航系统,提供给旅游自助查…

Android——集地图、定位、导航于一体

集地图、定位、导航于一体 效果视频电子地图地图修改定位图标 定位导航 尾言 效果视频 电子地图 地图 电子地图 修改定位图标 MyLocationConfiguration.LocationMode mCurrentMode MyLocationConfiguration.LocationMode.NORMAL;BitmapDescriptor mCurrentMarker BitmapD…

狱搜导航-个性化导航自定义导航网站,搜索导航,简洁清晰大气,支持各种自定义

个性化自定义的导航网站 个性化自定义的导航网站 个性化自定义的导航网站 直接进入主题把,是不是你喜欢的样子,一看便知,我说再多也没有用!! |A网导航 网址:anets.cn anets.top 功能 动态壁纸&#xf…

GPS卫星导航、

GPS卫星导航系统简介 全球定位系统(GPS)是本世纪70年代由美国陆海空三军联合研制的新一代空间卫星导航定位系统。其主要目的是为陆、海、空三大领域提供实时、全天候和全球性的导航服务,并用于情报收集、核爆监测和应急通讯等一些军事目的,是美国独霸全…

各类的导航

鼠标悬浮时高度发生改变 * {margin: 0;padding: 0;}ul {width: 800px;height: 50px;border-bottom: 1px solid #000;margin: 50px auto;}li {margin-top: 5px;list-style: none;float: left;border: solid #444;border-width: 1px 1px 0;margin-right: 11px;}a {display: block…

OSRM开源地图导航引擎介绍一

OSRM(Open Source Routing Machine)( https://github.com/Project-OSRM/osrm-backend)开源导航引擎, 用C14编写完成,此引擎基于OpenStreetMap数据进行计算。OSRM提供了以下服务: Nearest :根据坐标查找最近的匹配目标&#xff1…

Android手机实现GPS语音导航功能(Google地图导航)

Android上的Google地图现在也带导航了。简单的讲,就是输入起点和终点,它就能像普通的车载GPS一样,不但在图上提示线路,还能语音提示向东还是向西,在哪里转弯,距离等等。我在北京上地附近的测试,…