Vue Router 動態路由匹配


動態路由匹配

帶參數的動態路由匹配

將給定匹配模式的路由(path:'/users/:id')映射到同一個組件(Component:User)。

路徑參數

例如有一個User組件,它應該對所有用戶進行渲染,但用戶ID不同,在Vue Router中,可以在路徑中使用一個動態段(以冒號開始)來實現,稱之為‘路徑參數’。

{
        path: '/users/:id',
        component: Users
}

當一個路由被匹配時,它的params值將在每個組件中以this.$route.params的形式暴露出來(HTML中則是$route.params)。而動態段的key和對應值將被映射到params上,通過this.$route.params.動態段key獲取

響應路由參數的變化

當用戶從/users/johnny導航到/users/jolyne時,相同組件實例將被重復使用。兩個路由都渲染同個組件,復用則更加高效。但這也意味着組件的生命周期鈎子不會再被調用。

對同一組件參數的變化做出響應

可以用watch $route對象上的任意屬性:

created() {
    this.$watch(() => this.$route.params,
        (toParams, previousParams) => {
          //對路由變化做出響應
        })
  }

this.$watch(要監視的屬性,回調函數)

監視當前路由實例上的任意屬性,例如動態段的值發生變化時,會觸發回調函數,對路由的變化做出響應。

也可以使用beforeRouteUpdate導航守衛:

const User = {
  template: '...',
  async beforeRouteUpdate(to, from) {
    //對路由變化做出響應
  }
}

獲取params任意屬性對應的值:to.params.xxx

捕獲所有路由或404 Not found路由

常規參數只匹配url片段間的字符(即/xxx/中間的部分)。如果想匹配自定義路徑,可以在路徑參數后面的括號中加入正則表達式。

匹配任意路徑,可以使用通配符*:path:'*',通常用於客戶端404錯誤。如果使用了History模式,請確保正確配置了服務器。

當使用通配符路由時,請確保路由順序正確,即含有通配符的路由應該放在最后。

當使用一個通配符時,$route.params內會自動添加一個名為patchMatch參數,它包含URL通過通配符被匹配的部分

{
        path: '/user-*',
        name:'User',
        component:User
    }

上面例子中,若路徑為/user-admin,則this.$route.params.patchMatch=admin。

高級匹配模式

vue-router使用path-to-regexp作為路徑匹配引擎,所以支持很多高級的匹配模式,例如可選的動態路徑參數、匹配0個或多個(*)、1個或多個(+),甚至是自定義正則匹配(例如:'/:username(^\\d)+')。

匹配優先級

有時候,同一路徑可以匹配多個路由。此時,匹配的優先級就按照路由的定義順序:誰先定義的,誰的優先級就最高


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM