props配置
-
作用:让组件接收参数更方便
-
实现
-
在父(Message)组件中进行数据传递
Message组件
<router-link :to="{ name:'DEtail', query:{ id:item.id, title:item.title } }">{{ item.title }} </router-link> -
在index.js文件中需要接收参数的组件中进行配置
-
props值为对象,该对象中所有键值均通过props传递给Detail组件
import VueRouter from "vue-router"; import Home from "@/pages/Home.vue"; import Message from "@/pages/Message.vue"; import Detail from "@/pages/Detail.vue"; export default new VueRouter({ routes: [ { path: '/home', component: Home, children: [ { path: 'message', component: Message, children: [ { name: 'DEtail', path: 'detail', component: Detail, props:{ a:1, b:'hello' } } ] }, ] }, ] }) -
props值为布尔值,值为true时,将路由接收到的所有params参数通过props传递给Detail组件
import VueRouter from "vue-router"; import Home from "@/pages/Home.vue"; import Message from "@/pages/Message.vue"; import Detail from "@/pages/Detail.vue"; export default new VueRouter({ routes: [ { path: '/home', component: Home, children: [ { path: 'message', component: Message, children: [ { name: 'DEtail', path: 'detail', component: Detail, props:true } ] }, ] }, ] }) -
props值为函数,函数返回值的对象中每一组键值均以props传递给Detail组件
import VueRouter from "vue-router"; import Home from "@/pages/Home.vue"; import Message from "@/pages/Message.vue"; import Detail from "@/pages/Detail.vue"; export default new VueRouter({ routes: [ { path: '/home', component: Home, children: [ { path: 'message', component: Message, children: [ { name: 'DEtail', path: 'detail', component: Detail, //基础写法 props($route){ return { id:$route.query.id, title:$route.query.title } } //解构赋值写法 /*props({query}){ return { id:query.id, title:query.title } }*/ // 连续解构赋值写法 /*props({query:{id,title}}){ return { id, title } }*/ } ] }, ] }, ] })
-
-
在目标组件中进行渲染
Detail组件
<script> import {defineComponent} from 'vue' export default defineComponent({ name: "Detail", props:['id','title'], }) </script> <template> <ul> <li>{{id}}</li> <li>{{title}}</li> </ul> </template>
-