【小河今学 | Vue】Vue中合并params和query参数(尚品汇)

在练习尚品汇的过程中遇到的一个问题
老师让我们合并params和query参数,需要完成的需求如下
当点击联动框时跳转到search路由,同时带着点击组件搜到的query参数,然后在搜索框中搜索词条,词条转为params参数也要带着,即现在$route中既有query参数也有params参数
先搜索在点击联动框时同理分别接收到两个参数且要保证两个参数存在

先放上原本的代码和页面效果
在Header组件中

this.$router.push({
        name: 'search',
        params: { keyword: this.keyword || undefined },
      })

在TypeNav中

		let location = { name: "search" };
        let query = { categoryName: categoryname };
        location.query = query;
        this.$router.push(location);

可以看到在原本的网页中,由于搜索按钮和联动框点击都会跳转到search组件,同时分别带着query和params参数,但并不会合并而是覆盖
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

接着我按照老师的步骤进行条件判断
r o u t e 中本来就有 q u e r y 属性时保留这个 q u e r y 属性,当 route中本来就有query属性时保留这个query属性,当 route中本来就有query属性时保留这个query属性,当route中本来就有params属性时保留这个params属性

在Header组件中

let location = {
        name: 'search',
        params: { keyword: this.keyword || undefined },
      }
      if (this.$route.query) {
        location.query = this.$route.query
      }
      this.$router.push(location);

在TypeNav中

		let location = { name: "search" };
        let query = { categoryName: categoryname };
		if(this.$route.params){
          location.params = this.$route.params
        }
        location.query = query;
        this.$router.push(location);

写完后测试发现,当带着params属性点击联动框时可以保留这个params属性,但带着query属性进行搜索时反而收不到应该收到的params属性。
经过反复检查后发现,应该要在router文件中search的位置添加上params传参的占位符

			name: 'search',
            path: '/search:keyword',
            component: Search,
            meta:{
                isFooterShow:true,
            }

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值