我构建了简单的 formData。这是我的代码:
const handleFormSubmit = (data: T & { [key: string]: FileList }) => {
const formData = new FormData();
// console.log(data)
Object.entries(data).forEach(([key, value]) => {
// console.log(key, value, isListCheckPropArray(value))
if (value instanceof FileList) {
formData.append(key, value[0])
}
else if (Array.isArray(value)) {
// console.log(value)
value.forEach((item: any) => {
console.log(`Appending item:`, item);
if (typeof item === 'object' && 'id' in item && 'text' in item) {
formData.append(key, item.text);
console.log(`Appended item:`, item);
}
});
}
else {
formData.append(key, value as string);
}
});
for (const [key, value] of formData.entries()) {
console.log(`${key}: ${value}`);
}
};
在您的代码中,问题在于在数组中附加具有相同键的多个项目。迭代值数组时,如果多个项目满足条件(例如具有特定属性的对象),则使用相同的键附加它们将导致仅保留最后一个值。要保留所有值,您可以为每个项目附加一个唯一的键。例如,您可以使用 formData.append(${key}_${index}, item.text) 来代替 formData.append(key, item.text) 来确保 FormData 对象中的每个值都是不同的。