如何在 React Native 中将数组追加到 FormData 中

Zai*_*shi 2 javascript react-native axios

我有三个数组,我必须通过 Axios 将它们发送到 formdata 中。数组的键是record[]。但是我有三个数组,但我只有一个键,如何在同一个键上发送三个数组记录[] 在此输入图像描述 这是我的代码

const params = new FormData();
      params.append("record[]", this.props.addedOrders);
      params.append("record[]", this.props.addedCustomers);
      params.append("record[]", this.props.addedRecovery);
Run Code Online (Sandbox Code Playgroud)

ave*_*dah 8

可以使用 向同一个键添加多个值FormData。来自文档

与常规表单数据一样,您可以附加多个具有相同名称的值。例如(并通过在名称中添加 [] 来兼容 PHP 的命名约定):

这是一个例子:

const params = new FormData();

params.append('record[]', 1);
params.append('record[]', 2);
params.append('record[]', 3);

console.log(params.getAll('record[]'));
Run Code Online (Sandbox Code Playgroud)

由于您的问题询问如何将数组附加到FormData,因此值得指出它FormData.append适用于字符串和 blob,而其他类型将转换为字符串。

如果发送的值与 String 或 Blob 不同,它将自动转换为 String。

因此,如果您尝试追加数组,默认情况下它将转换为逗号分隔的列表。对于将序列化为类似[object Object]. 您也可以使用 eg 将每个数组编组为字符串JSON.stringify,然后将数据转换回服务器端,但这是一种实现选择。

const params = new FormData();

params.append('record[]', JSON.stringify([{name: 'joe'}, {name: 'bob'}]));
params.append('record[]', JSON.stringify([{name: 'rand'}, {name: 'smith'}]));

console.log(params.getAll('record[]'));
Run Code Online (Sandbox Code Playgroud)

综上所述,我想说你的问题出在其他地方。