两种传参方式(query和params)
query和params的区别
形式:
- 二者还有点区别,直白的来说query相当于get请求,页面跳转的时候,可以在地址栏看到请求参数,而params相当于post请求,参数不会再地址栏中显示。(但是使用params传参,容易造成数据丢失)
params在路由中配置
{
path: '/argu/:name/:id', //这种路由配置是params传递参数,且这个后面必须加参数,如果不加,刷新页面这些参数会消失
name:'argu',
component: () => import('@/views/argu.vue'),
},
//使用params传递参数注意要在`path路径后面添加参数`,不然刷新页面数据会丢失。
query在路由中配置
var router = new VueRouter({
routes: [
{ path: '/login', component: login },
{ name:'register',path: '/register', component: register }
]
})
特点:
1. 使用query传参的时候,name,path都可以引入,但使用params传参的时候只能使用name进行引入。
2. 接收参数的时候使用this.$route.params.name或者this.$route.query.name
3. 进行路由跳转的时候,我们使用this.$ router.push('路径')
4. params是路由的一部分,必须要在路由后面添加参数名。query是拼接在url后面的参数,没有也没关系
注意事项:通过query传参方式接收到的参数,在当前页面刷新时,会造成数据丢失
detailFun(row) {
this.$router.push({
path: '/account/order/detail',
query: { orderDetail: JSON.stringify(row) }
})
},
接收页面
created() {
this.orderDetail = JSON.parse(this.$route.query.orderDetail)
}
这样转换一下刷新后数据就不会丢失。