1. 程式人生 > 實用技巧 >vue-router的幾種用法

vue-router的幾種用法

1.全域性路由守衛

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

當一個導航觸發時,全域性前置守衛按照建立順序呼叫。守衛是非同步解析執行,此時導航在所有守衛 resolve 完之前一直處於等待中。

每個守衛方法接收三個引數:

  • to: Route: 即將要進入的目標

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

  • next: Function: 一定要呼叫該方法來resolve這個鉤子。執行效果依賴next方法的呼叫引數。

    • next(): 進行管道中的下一個鉤子。如果全部鉤子執行完了,則導航的狀態就是confirmed(確認的)。

    • next(false): 中斷當前的導航。如果瀏覽器的 URL 改變了 (可能是使用者手動或者瀏覽器後退按鈕),那麼 URL 地址會重置到from路由對應的地址。

    • next('/')或者next({ path: '/' }): 跳轉到一個不同的地址。當前的導航被中斷,然後進行一個新的導航。你可以向next傳遞任意位置物件,且允許設定諸如replace: truename: 'home'之類的選項以及任何用在router-linktoproprouter.push中的選項。

    • next(error): (2.4.0+) 如果傳入next的引數是一個Error例項,則導航會被終止且該錯誤會被傳遞給

      router.onError()註冊過的回

你也可以註冊全域性後置鉤子,然而和守衛不同的是,這些鉤子不會接受next函式也不會改變導航本身:

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

二。路由獨享守衛
該路由守衛為當前路由進來前的一次校驗,如果成功,進入當前路由,不成功則不進行跳轉。寫法是在需要守衛的路由下面加beforeEdnter.

三.元件內的路由守衛

可以在單個元件中加入路由鉤子函式

1.beforeRouteEnter(to,from,next) 路由進入前守衛 這裡面不能使用this,因為即將登場的元件還沒被建立

2.beforeRouteUpdate(2.2)路由更新

3.beforeRouteLeave 路由離開時

四。動態建立路由

在有些情況下,根據是否有某些許可權建立某些路由,這樣也是一種路由許可權的方式

五.路由元件的快取

利用keepalive做元件快取,保留元件狀態,提高執行效率.

<keep-alive include='a,b'>

   <router-view></router-view>

</keep-alive>

使用incloude或者exclude時要給元件設定name

兩個特別的生命週期:actived. deactived, 只有在用keepalive時元件才會多出這兩個鉤子函式。