vue-router

190 阅读1分钟

两种传参方式(query和params)

query和params的区别

形式:

  1. 二者还有点区别,直白的来说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)
 }
 这样转换一下刷新后数据就不会丢失。