美文网首页
路由守卫

路由守卫

作者: lucky_yao | 来源:发表于2020-11-02 09:06 被阅读0次

路由守卫

当导航发生改变的时候,v-router会在不同的地方调用指定的函数,也就是与路由有关的生命周期函数,也称为:路由守卫

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

组件内守卫

定义在组件内的与路由有关的生命周期函数(守卫)

  • beforeRouteEnter
  • beforeRouteUpdate
  • beforeRouteLeave

beforeRouteEnter

当路由解析完成,并在指定的组件渲染之前(组件beforeCreated之前),不能通过这里的this访问组件实例,需要通过next回调来进行调用

不!能!获取组件实例this
因为当前守卫执行前组件实例还没完全被创建

beforeRouteEnter(to,from,next){
    next(vm=>){
      //  vm...
    }
}

beforeRouteUpdate

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

beforeRouteUpdate(to,from,next){
    可以访问组件实例`this`
}

beforeRouteLeave

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

beforeRouteLeave(to,from,next){
    可以访问组件实例`this`
}

路由守卫参数

to

即将要进入的目标 路由对象($route)

from

当前导航正要离开的路由对象($route)

next

路由确认回调函数,类似Promise中的resolve函数,一定要确保调用next函数,但是后续的导航行为将依赖next方法调用参数

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

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

  • next('/') 或者 next({ path: '/' }) : 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航### 路由独享的守卫

可以在路由配置上直接定义 beforeEnter 守卫,相对来说,应用不多

const router = new VueRouter(
  { 
    routes: [ 
      { 
        path: '/foo', 
        component: Foo, 
        beforeEnter: (to, from, next) => { 
          // ... 
        }
        } 
    ] 
  }
)

全局守卫

全局守卫是注册在 <u>router</u> 对象(new VueRouter({...}))上的

  • beforeEach
  • beforeResolve
  • afterEach

beforeEach

当一个导航触发时,全局前置守卫按照创建顺序调用

router.beforeEach((to, from, next) => {
  // ...
})

beforeResolve

在所有组件内守卫和异步路由组件被解析之后被调用

router.beforeResolve((to, from, next) => {
  // ...
})

afterEach

导航被确认后调用

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

因为导航已经被确认,所以没有 next

相关文章

  • vue的路由守卫

    路由守卫分3种:全局守卫路由独享守卫组件内的路由守卫 1.全局守卫:beforeEachbeforeResolve...

  • 路由守卫

    路由守卫分为三种 全局守卫: 路由独享守卫卸载route里 组件内守卫:写在组件配置对象里

  • [VUE]动态的更新页面的Title

    首先可以用路由守卫 + VueRouter来实现路由守卫相关文档1.main.js里加入路由守卫 // 页面修改时...

  • vue学习笔记(八)导航守卫(全局守卫,路由独享,组件内守卫)

    导航守卫-全局守卫 导航守卫-路由独享 导航守卫-组件内守卫

  • vue-路由导航守卫&异步组件

    导航守卫包括全局导航守卫、路由守卫、组件局部守卫 全局导航守卫 在全局导航守卫中,每次路由的跳转他们三个都会被触发...

  • Vue嵌套路由和路由守卫

    嵌套路由 路由守卫

  • vue路由守卫

    概念 路由守卫,官网也叫导航守卫,所谓导航,就是路由正在发生变化 路由守卫,主要就是用来通过跳转或取消的方式守卫导...

  • vue学习(52)vue-router(4)

    路由守卫作用:对路由进行权限控制分类:全局守卫、独享守卫、组件内守卫全局守卫(我们可以在meta中配置一些信息) ...

  • 路由

    全局守卫就是每一个路径进来都会经过这个全局守卫的处理 单路由守卫就是把守卫指定给某一个路由 组件内路由就是把守卫放...

  • vue-router 常见导航守卫

    全局守卫vue-router全局有三个守卫 路由独享守卫如果你不想全局配置守卫的话,你可以为某些路由单独配置守卫 ...

网友评论

      本文标题:路由守卫

      本文链接:https://www.haomeiwen.com/subject/psfuuktx.html