Vue - 路由組件傳參(props配置)


作用:讓路由組件更方便的收到參數

布爾模式

props值為布爾值,布爾值為true,則把路由收到的所有params參數通過props傳給Info組件

const routes = [
  {
    path: '/about',
    name: 'About',
    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue'),
    children:[
      {
        path:'person',
        name:'Person',
        component: () => import('../views/Person'),
        children:[
          {
            name:'Info',
            path:'info',
            component: () => import('../views/Info'),
            props:true,
          }
        ]
      }
    ]
  }
]

對象模式

props值為對象,該對象中所有的key-value的組合最終都會通過props傳給Info組件

const routes = [
  {
    path: '/about',
    name: 'About',
    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue'),
    children:[
      {
        path:'person',
        name:'Person',
        component: () => import('../views/Person'),
        children:[
          {
            name:'Info',
            path:'info',
            component: () => import('../views/Info'),
            props:{name:'張三',age:18},
          }
        ]
      }
    ]
  }
]

函數模式

props值為函數,該函數返回的對象中每一組key-value都會通過props傳給Info組件

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/about',
    name: 'About',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue'),
    children:[
      {
        path:'person',
        name:'Person',
        component: () => import('../views/Person'),
        children:[
          {
            name:'Info',
            path:'info',
            component: () => import('../views/Info'),
            props(route){
              return {
                name:route.query.name,
                age:route.query.age
              }
            },
          }
        ]
      }
    ]
  }
]

接收參數

<template>
  <div>
    <p>姓名:{{name}}</p>
    <p>年齡:{{age}}</p>
  </div>
</template>

<script>
export default {
  name: "Info",
  props:['name','age']
}
</script>


免責聲明!

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



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