为什么表单数据不附加值?

问题描述 投票:0回答:1

我构建了简单的 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}`);
        }
      };

这里第二个 if 语句不附加值。 console.log 显示附加项目。但完成后不显示。为什么?

javascript reactjs multipartform-data
1个回答
0
投票

在您的代码中,问题在于在数组中附加具有相同键的多个项目。迭代值数组时,如果多个项目满足条件(例如具有特定属性的对象),则使用相同的键附加它们将导致仅保留最后一个值。要保留所有值,您可以为每个项目附加一个唯一的键。例如,您可以使用 formData.append(${key}_${index}, item.text) 来代替 formData.append(key, item.text) 来确保 FormData 对象中的每个值都是不同的。

© www.soinside.com 2019 - 2024. All rights reserved.