http://demo.com?name=1&name2上面的地址,在vue中
const route = useRoute();
route.query.nameroute.query.name是['1','2']
现在想兼容只有一个值或多个值的情况,vue-route有没有提供方法,还是需要自己去实现。比如
route.getQuery('name');
- 一个值就取那个值
- 多个值就取最后一个
http://demo.com?name=1&name2上面的地址,在vue中
const route = useRoute();
route.query.nameroute.query.name是['1','2']
现在想兼容只有一个值或多个值的情况,vue-route有没有提供方法,还是需要自己去实现。比如
route.getQuery('name');
参考的文档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多个同名query变成数组是HTTP相关的内容了,并不是Vue处理的。
其实尤大有提到过这种和原始设计有关的内容,Vue会保持原样或者往这个方向上去靠近,并不会去改变原有的设计,不去制造破坏/断层。
所以现在已经可以拿到合并后的集合了,单独处理一下就好了,如果是 String 就直接赋值,如果是 Array 就 pop() 取最后一个值(可以使用 isArray 来判断)。
11 回答1.3k 阅读
3 回答965 阅读✓ 已解决
2 回答961 阅读✓ 已解决
3 回答950 阅读✓ 已解决
2 回答649 阅读
3 回答972 阅读
3 回答971 阅读
参考官网文档https://router.vuejs.org/zh/a...