vue的route.query多个同名参数会返回数组?

唯见长江天际流
  • 683
北京市
http://demo.com?name=1&name2

上面的地址,在vue中

const route = useRoute();

route.query.name

route.query.name是['1','2']

现在想兼容只有一个值或多个值的情况,vue-route有没有提供方法,还是需要自己去实现。比如

route.getQuery('name');

  • 一个值就取那个值
  • 多个值就取最后一个
回复
阅读 602
4 个回答
AliveCrow
  • 5
湖北新手上路,请多包涵

参考的文档https://router.vuejs.org/zh/a...

// route/index.js 差不多就这思路
const router = createRouter({
  history: createWebHashHistory(),
  routes,
  parseQuery: function (opts) {
    const query = qs.parse(opts);
    const result = {};
    for (let key in query) {
      if (Array.isArray(query[key])) {
        result[key] = query[key].pop();
      } else {
        result[key] = query;
      }
    }
    return result;
  },
});

// 然后使用route.query就是上面的result
Jetsan
  • 3
新手上路,请多包涵

你的问题里不是都取到数据了,要怎么样的值,自己处理不就行了

陟上晴明
  • 2.9k
浙江

多个同名query变成数组是HTTP相关的内容了,并不是Vue处理的。
其实尤大有提到过这种和原始设计有关的内容,Vue会保持原样或者往这个方向上去靠近,并不会去改变原有的设计,不去制造破坏/断层。

所以现在已经可以拿到合并后的集合了,单独处理一下就好了,如果是 String 就直接赋值,如果是 Arraypop() 取最后一个值(可以使用 isArray 来判断)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进