vue 動態路由匹配&路由組件傳遞參數


動態路由匹配

動態路由匹配的基本使用

當我們需要許多類似路由(例如用戶界面,不同用戶登錄的界面不相同),就需要寫許多基本相同的路由,這個時候我們就可以使用動態路由來解決這個問題。

應用場景:通過動態路由參數的模式進行路由的匹配

在通過路由設置完成后,通過 $router.params 獲取路由的參數

var router = new VueRouter({
  router: [
    //動態路徑參數 以冒號開頭
    { path: '/user/:id', component: User }
  ]
})
const User = {
  //路由組件中通過 $router.params 獲取路由參數
  template: `<div>User{{ $router.params.id }}</div>`
}

路由組件傳遞參數

$router與對應路由形成高度耦合,不夠靈活,所以可以使用props將組件和路由解耦

props的值為布爾類型

const router new VueRouter({
  router: [
    //如果 props 被設置為 true, router.params 將會被設置為組件屬性
    { path: '/user/:id', component: User, props:true}
  ]
})

const User = {
  props: ['id'],//使用 props 接收路由的參數
  template: `<div>用戶ID:{{ id }}</div>` //使用路由參數
}

props的值為對象類型

當props的值為對象類型的時候,此時通過路徑傳遞過來的值將無法使用,子組件只能獲取到props傳遞的靜態參數

const router new VueRouter({
  router: [
    //如果 props 是一個對象,它會被按原樣式設置為組件屬性
    { path: '/user/:id', component: User, props:{ uname:'yzy', age: 21 } }
  ]
})

const User = {
  props: ['uname',age],
  template: `<div>用戶ID:{{ uname + '---' + age}}</div>`
}

如果既想傳遞路徑中的參數,也想傳遞靜態參數,可以通過props函數類型傳遞參數

props的值為函數類型

 

 

const router new VueRouter({
  router: [
    //如果 props 是一個函數,則這個函數 接收 對象為自己的形參
    { path: '/user/:id', 
     component: User,
      props:router => ({ uname: 'yzy', age: 21, id: router.parops.id})
  ]
})

const User = {
  props: ['uname','age','id'],
  template: `<div>用戶ID:{{ uname + '---' + age + '---' + id }}</div>`
}

 


免責聲明!

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



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