前端配置
tags 上一个界面URL传递的数组 但形式是tag[]=’标签1’&tag[]=’标签2’无法正确发送给后端。
需要使用qs库进行转换成 tag=’标签1’&tag=’标签2’的形式。
onMounted(async() => {
const res = await myaxios.get('/user/tag',{
params: {
tags: route.query.tags
},
paramsSerializer: params => {
return qs.stringify(params, {indices: false})
}
})
if (res.data) {
res.data.forEach(user => {
if (user.tags) {
user.tags = JSON.parse(user.tags);
}
})
userList.value = res.data;
}
});
paramsSerializer是一个属性名,可能是用于配置一个 HTTP 请求库(比如 Axios)的选项。params => {...}是一个箭头函数,它接受一个名为params的参数。在这段代码中,params通常是一个包含了请求参数的 JavaScript 对象。qs.stringify(params, {indices: false}):
qs是一个用于处理 URL 查询参数的库。在这里,qs库的stringify方法用于将一个对象序列化成一个 URL 查询字符串。params是要序列化的对象,它通常包含了请求参数。{indices: false}是一个配置选项,它告诉qs库不要在序列化数组时添加索引。例如,对于参数{arr: [1, 2, 3]},如果索引为true,会生成arr[0]=1&arr[1]=2&arr[2]=3,而在这里设置为false后会生成arr=1&arr=2&arr=3。总的来说,这段代码的作用是将一个包含了请求参数的 JavaScript 对象序列化成一个 URL 查询字符串,以便于在 HTTP 请求中传递参数。这通常用于配置一个 HTTP 请求库的参数序列化方式。
JSON.parse() 是 JavaScript 中用于解析 JSON 字符串的内置函数。它将一个合法的 JSON 字符串作为参数,并返回一个与该 JSON 字符串对应的 JavaScript 对象。
例如,如果 user.tags 的值是 '[{"id": 1, "name": "tag1"}, {"id": 2, "name": "tag2"}]',经过解析后会得到一个包含两个对象的数组。
javascriptCopy codeJSON.parse('[{"id": 1, "name": "tag1"}, {"id": 2, "name": "tag2"}]');
// 返回结果是一个包含两个对象的数组:
// [{id: 1, name: "tag1"}, {id: 2, name: "tag2"}]