vue-動態路由的匹配

我們經常需要把某種模式匹配到所有的路由,全都映射到同個組件。例如,我們有一個User組件,對于所有ID各部相同的用戶,都要使用這個組件來渲染。那么,我們可以在vue-router的路由路徑中使用『動態路徑參數』(dynamic segment)來達到這個效果:

const User = {
  template: '<div>User</div>'
}

const router = new VueRouter({
  routes: [
    // 動態路徑參數 以冒號開頭
    { path: '/user/:id', component: User }
  ]
})

現在呢,像** /user/foo **和 /user/bar 都將映射到相同的路由。

一個『路徑參數』使用冒號 : 標記。當匹配到一個路由時,參數值會被設置到 this.$route.params,可以在每個組件內使用。于是,我們可以更新** User **的模板,輸出當前用戶的 ID:

const User = {
  template: '<div>User {{ $route.params.id }}</div>'
}

你可以在一個路由中設置多段『路徑參數』,對應的值都會設置到 $route.params 中。例如:

模式 匹配路徑 $route.params
/user/:username /user/evan { username: 'evan' }
/user/:username/post/:post_id /user/evan/post/123 { username: 'evan', post_id:

除了** $route.params**
外,$route
對象還提供了其它有用的信息,例如,$route.query
(如果 URL 中有查詢參數)、$route.hash
等等。你可以查看 API 文檔 的詳細說明。

響應路由參數的變化

提醒一下,當使用路由參數時,例如從 /user/foo 導航到 user/bar原來的組件實例會被復用。因為兩個路由都渲染同個組件,比起銷毀再創建,復用則顯得更加高效。不過,這也意味著組件的生命周期鉤子不會再被調用。
復用組件時,想對路由參數的變化作出響應的話,你可以簡單地 watch(監測變化)$route 對象:

const User = {
  template: '...',
  watch: {
    '$route' (to, from) {
      // 對路由變化作出響應...
    }
  }
}

很晚了 ,各位也別太晚睡覺。明天會發布vue-嵌套路由

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容