Vue---- 路由(下)-- 导航守卫

导航守卫

        vue-router提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有三种方式植入路由导航

  • 全局守卫
  • 单个路由独享守卫
  • 组件内守卫

导航守卫---全局守卫

全局守卫分为两种:

  • 全局前置守卫:当一个导航触发时,就会触发全局前置守卫;可以在全局前置守卫中做出业务逻辑处理;
  • 全局后置钩子:当一个导航触发时,会触发全局前置守卫,同样,会触发全局后置钩子,因为进入一个新的,必定要离开一个旧的。但是,后置钩子不会改变导航本身;

1,全局前置守卫:

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

可以返回的值:

1. false   取消当前的导航。在取消当前路由导航时,一定要配合正确的业务逻辑去处理。

 2. 一个路由地址: 通过一个路由地址跳转到一个不同的地址,就像你调用 router.push() 一样。     3. 不写return,或者返回undefined或者true,进入下一个路由。

可以在什么时候使用呢!

1.访问页面的任意路径时,如果没有登录,则跳转到登录页面;

2,访问登录页面时,如果已经登陆过,则跳转到首页等;

2,全局后置钩子:

可以在什么时候使用呢!

设置标签页标题、浏览器窗口滚动到0的位置等。

导航守卫---路由独享守卫

它是写在路由表中的守卫,针对的是和当前路由相关的,那么其他与之不相关的路由,它是无法监听它的变化情况的!

{
    path:'/users/:id',

    component:UserDetails,

    beforeEnter:(to,from) => {

    //reject the navigation

    return false
}

}

beforeEnter守卫:只在进入路由时触发,不会在params、query或hash 改变时触发。

可以在哪使用呢!

权限控制上。比如用户想进入个人中心时,如果未登录则进入登录组件。 

导航守卫--组件内守卫

可以在路由组件内直接定义路由导航守卫,当组件被渲染时,路由守卫才会被触发。

组件内守卫有三个:

  • beforeRouteEnter
  • beforeRouteUpdate
  •  beforeRouteLeave

beforeRouteEnter

 在渲染该组件的对应路由被验证前调用 不能获取组件实例 `this` 因为当守卫执行时,组件实例还没被创建

    vm将作为当前组件的实例,可以调用组件的属性和方法;

导航守卫--组件更新守卫

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

与$watch 监听路由变化一样

导航守卫--组件离开守卫

当离开当前组件时,会触发离开守卫;     

通过return控制开行为

在什么时候使用呢!

清除本页面计时器,节省内存 当组件中有未关闭的窗口,未保存的数据离开时,给出提示     存储一些信息到本地


路由元信息

 如果想在路由上附加一个额外信息,可以在定义路由时, 通过meta属性实现。     然后可以在路由守卫中(to,from)获取元信息,完成业务逻辑需求

 路由切换过渡特效

想要在你的路径组件上使用转场,并对导航进行动画处理,你需要使用 v-slot指令;

‘Component’(不能写成其他名字) 是你切换时对应的组件,你可以在transition上使用以前的所有过渡方式; 

OK,本文到此结束,希望本文对你有所帮助 😃

如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值