vue路由守卫使用

vue路由钩子函数:

路由的钩子函数总结有6个

全局的路由钩子函数:beforeEach、afterEach

vue router.afterEach(全局后置守卫)
router.beforeEach 是页面加载之前,router.afterEach是页面加载之后

单个的路由配置内使用的钩子函数:beforeEnter

组件内的路由钩子函数:beforeRouteEnter、beforeRouteLeave、beforeRouteUpdate

所有钩子函数参数都为 (to,from,next)

to: (Route路由对象) 即将要进入的目标 路由对象 to对象下面的属性

from: (Route路由对象) 当前导航正要离开的路由

next(‘/’) 或者 next({ path: ‘/’ }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。

应用场景:可进行一些页面跳转前处理,例如判断需要登录的页面进行拦截,做登录跳转!


router.beforeEach((to, from, next) => {
    if (to.meta.requireAuth) {
        //判断该路由是否需要登录权限
        if (token) {
            //通过读取token,如果存在,name接下一步如果不存在,那跳转回登录页
            next()//不要在next里面加"path:/",会陷入死循环
        }
        else {
            next({
                path: '/login',
                query: {redirect: to.fullPath}//将跳转的路由path作为参数,登录成功后跳转到该路由
            })
        }
    }
    else {
        next()
    }
})

路由独享的守卫(路由内部钩子)

在路由上直接配置 beforeEnter 守卫:


const router = new VueRouter({
  routes: [
    {
      path: '/foo',
      component: Foo, // 这儿你可以使用路由懒加载引入
      beforeEnter: (to, from, next) => {
        // 
      }
    }
  ]

组件内的守卫(组件独享钩子)

1、beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave

beforeRouteEnter (to, from, next) {
  // 在渲染该组件的对应路由被 confirm 前调用
  // 不能!获取组件实例 this
  // 因为当钩子执行前,组件实例还没被创建
},
beforeRouteUpdate (to, from, next) {
  // 当转一个同一个页面中,当页面地址栏的参数发生变化时候,而数据并没有实时的进行更新,需要刷新页面才会显示新的数据,可通过to获取到路由的参数
  // 可以访问组件实例 `this`
},
beforeRouteLeave (to, from, next) {
  // 导航离开该组件的对应路由时调用
  // 可以访问组件实例 this
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值