1. 程式人生 > >vue-router的鉤子函數

vue-router的鉤子函數

完整 解析 路由器 鉤子 one 但是 通過 conf for

vue-router的鉤子函數

我們可以在任何組件內通過 this.$router 訪問路由器,也可以通過 this.$route 訪問當前路由


全局前置守衛
router.beforeEach((to,from,next) => {  
//to: Route: 即將要進入的目標 路由對象

//from: Route: 當前導航正要離開的路由

//next: Function: 一定要調用該方法來 resolve 
})
這個鉤子。執行效果依賴 next 方法的調用參數。
全局後置守衛
router.afterEach((to, from) => {
  // ...
})
路由獨享的守衛
  routes: [
    {
      path: ‘/foo‘,
      component: Foo,
      beforeEnter: (to, from, next) => {
        // ...
      }
    }
  ]
組件內的守衛
  beforeRouteEnter (to, from, next) {
    // 在渲染該組件的對應路由被 confirm 前調用
    // 不!能!獲取組件實例 `this`
    // 因為當守衛執行前,組件實例還沒被創建
  },
  beforeRouteUpdate (to, from, next) {
    // 在當前路由改變,但是該組件被復用時調用
    // 舉例來說,對於一個帶有動態參數的路徑 /foo/:id,在 /foo/1 和 /foo/2 之間跳轉的時候,
    // 由於會渲染同樣的 Foo 組件,因此組件實例會被復用。而這個鉤子就會在這個情況下被調用。
    // 可以訪問組件實例 `this`
  },
  beforeRouteLeave (to, from, next) {
    // 導航離開該組件的對應路由時調用
    // 可以訪問組件實例 `this`
  }

完整的導航解析流程

1.導航被觸發。
2.在失活的組件裏調用離開守衛。
3.調用全局的 beforeEach 守衛。
4.在重用的組件裏調用 beforeRouteUpdate 守衛 (2.2+)。
5.在路由配置裏調用 beforeEnter。
6.解析異步路由組件。
7.在被激活的組件裏調用 beforeRouteEnter。
8.調用全局的 beforeResolve 守衛 (2.5+)。
9.導航被確認。
10.調用全局的 afterEach 鉤子。
11.觸發 DOM 更新。
12.用創建好的實例調用 beforeRouteEnter 守衛中傳給 next 的回調函數。

vue-router的鉤子函數