<el-button type="primary" @click="handleClick(2)">查看详情</el-button>
1、第一种方法:拼接方式:
methods:{
handleClick(id) {//直接调用$router.push 实现携带参数的跳转
this.$router.push({path: `/detail/${id}`,})
}
对应路由配置:
{
path:'/detail/:id',
name:'detail',
component: detail
} 获取参数方式: this.$route.params.id
2、第二种方法:params传参 (通过路由属性中的name来确定匹配的路由,通过params来传递参数。)
methods:{
handleClick(id) {
this.$router.push({name:'detail', // 根据name确定匹配路由params: {id: id}})
}
//或者采用router-link前往Detail页面
<router-link :to="{name: 'detail', params: { id: 1 }}">前往Detail页面</router-link>
对应路由配置:
{
path:'/detail/:id',
name:'detail',
component: detail
} 获取参数方式: this.$route.params.id
三、第三种方法:query传参
使用path来匹配路由,然后通过query来传递参数,这种情况下 query传递的参数会显示在url后面?id=?
methods:{
handleClick(id) {
this.$router.push({path:'/detail',query: {id: id}})
}
对应路由配置:
{
path:'/detail',
name:'detail',
component: detail
} //获取参数:this.$route.query.id
四、总结:params和query中的区别
1、接收方式
query传参:this.$route.query.id
params传参:this.$route.params.id
2、路由展现方式
query传参:/detail?id=1&user=123&identity=1&更多参数
params传参:/detail/123