路由组件传值
2023/2/9
路由组件传值
Query参数
传递参数
<!-- 跳转并携带query参数,to的字符串写法 -->
<router-link :to="/home/message/detail?id=666&title=你好">跳转</router-link>
<!-- 跳转并携带query参数,to的对象写法 -->
<router-link :to="{
path:'/home/message/detail',
query:{
id:666,
title:'你好'
}
}">跳转</router-link>接收参数
$route.query.id
$route.query.title命名路由
作用
可以简化路由的跳转
如何使用
1.给路由命名
{
path:'/demo',
component:Demo,
children:[
{
path:'test',
component:Test,
children:[
{
name:'hello' //给路由命名
path:'welcome',
component:Hello,
}
]
}
]
}2.简化跳转
<!--简化前,需要写完整的路径 -->
<router-link to="/demo/test/welcome">跳转</router-link>
<!--简化后,直接通过名字跳转 -->
<router-link :to="{name:'hello'}">跳转</router-link>
<!--简化写法配合传递参数 -->
<router-link
:to="{
name:'hello',
query:{
id:666,
title:'你好'
}
}"
>跳转</router-link>params参数(动态路由)
配置路由,声明参数
{
path:'/home',
component:Home,
children:[
{
path:'news',
component:News
},
{
component:Message,
children:[
{
name:'xiangqing',
path:'detail/:id/:title', //使用占位符声明接收params参数
component:Detail
}
]
}
]
}参数传递
<!-- 跳转并携带params参数,to的字符串写法 -->
<router-link :to="/home/message/detail/666/你好">跳转</router-link>
<!-- 跳转并携带params参数,to的对象写法 -->
<router-link
:to="{
name:'xiangqing',
params:{
id:666,
title:'你好'
}
}"
>跳转</router-link>参数接收
$route.params.id
$route.params.title注意:
路由携带params参数时,若使用to的对象写法,则不能使用path配置项,必须使用name配置!
props配置
作用
简化路由组件接收参数。
路由规则配置props传参
在路由规则中开启 props 传参,组件可以使用 props 接收路由参数:
{
path: '/movie/:id/:title',
component: Movie,
// 方式一:该对象中的所有 key-value 都会以 props 的形式传给组件
// 该方式是写死的,少用
props: {id: 666, title: 'hello'}
// 方式二:把 params 参数以 props 的形式传给组件
// 只能接收 params 参数
props: true
// 方式三:函数写法,啥都能传
props($route) {
return {
id: $route.query.id,
title: $route.params.title,
age: 21
}
}
}组件接收参数
<template>
<h1>Movie组件,参数值:{{ id }},题目:{{ title }}</h1>
</template>
....
export default {
// 使用 props 接收路由规则的参数项
props: ['id', 'title'],
}