对于某些axios请求:
API.post(
`v${process.env.REACT_APP_API_VERSION}/register/company/`,
{
type: values.type,
dba: values.dba,
ein: values.ein,
file_type: values.file_type,
},
如果参数没有被赋值(仍然是“”),我想避免发送参数。
即我想知道在我的请求对象中仅包含非空参数的最干净的方法。 我可以使用if检查来执行此操作,但是对较大请求中的每个项目都没有意义。 例如:
const postData = {
first_name: values.first_name,
last_name: values.last_name
};
if (values.middle_name !== "") {
postData.middle_name = values.middle_name;
}
谢谢
答案 0 :(得分:2)
您可以尝试以下操作:
Object.keys(values).forEach((key) => {
if(!values[key]) delete values[key];
})
它的基本作用是删除values
对象内所有错误的元素,其中包括空字符串。
答案 1 :(得分:0)
我能想到的最短的解决方案。对于一般的解决方案,我将使用包装器,但是如果您只需要检查几个属性,那么这个就足够了。
const v = values;
API.post(
`v${process.env.REACT_APP_API_VERSION}/register/company/`,
{
...(v.type&&{type: v.type}),
...(v.dba&&{dba: v.dba}),
...(v.ein&&{type: v.ein}),
file_type: values.file_type,
},