一、方式区分
- router-link形式传参(在路径中显示参数,刷新页面参数不丢失);
- params和query传参都可以用name方式;
- query传参还可以用path方式;
- path跳转会在地址栏url中显示参数,刷新页面参数不丢失(相当于get 明文传输);
- params + name跳转不会在路径中显示参数,刷新页面参数丢失(相当于 post 隐示传输);
二、实例
1、router-link传递方式
//1、router-link传递方式
// 形式1 query传参
<router-link :to="{path:'/path',query:{id:'1'}}"><router-link>
<router-link :to="/path?id=1"><router-link>
// 形式2 在path后面跟对应的值
path:'/path/:id'
<router-link :to="`/path/${id}`"><router-link>
//子页面获取参数
$route.query.name
//路径显示,刷新页面,参数不丢失
/path?id=123
2、params + name 传递方式:参数丢失
2、params + name匹配路由
//配置路由中的name
name:'details-lemon'
//传递方式,通过name匹配路由
this.$router.push({
name: "details-lemon", //路由配置中的name
params:{
id:222
}
});
//获取参数
$route.query.name
//传递后形成的路径,刷新页面,参数丢失
/path
3、query 传递方式
//1、传递方式:query + path匹配路由
this.$router.push({
path:'/path',
query: {
id:'1'
}
})
//获取参数
$route.query.name
//路径显示,刷新页面,参数不丢失
/path?id=1
--------------------------------------------------------------------
2、传递方式:query + name匹配路由
this.$router.push({
name:'details-lemon',//路由配置中的name
query: {
id:'1'
}
})
//获取参数
$route.query.name
//路径显示,刷新页面,参数不丢失
/path?id=1