首页 > 解决方案 > 如何使用 react-admin 的 SelectArrayInput 元素将数据作为对象数组发送到服务器,即 { clients: [id: 1, id: 2]}?

问题描述

在 react-admin 我有以下ReferenceArrayInput->SelectArrayInput组件如下:

<Create {...props}>
    <SimpleForm>

        <ReferenceArrayInput source="clients" reference="client">
            <SelectArrayInput optionText="clientName" />
        </ReferenceArrayInput>

    </SimpleForm>
</Create>

它可以工作,它从client源接收数据,并且 id 显示带有clientName标签的选项。

但是,当提交表单时,它会向服务器发送以下请求正文:

{
   "clients": [1,2,3]
{

我想将其发送为:

{
   "clients": [
     {"id": 1},
     {"id": 2},
     {"id": 3}
   ]
}

是否有可能,通过设置某些选项或者我应该使用不同的组件?

标签: reactjsreact-admin

解决方案


为此,您有两种选择:

  • 转换 dataProvider 中的数据

  • 将转换函数传递给您的或组件的transform道具。CreateEdit

    export const UserCreate = (props) => {
        const transform = (data) => ({
            ...data,
            clients: data.clients.map((id) => ({ id })),
        });
    
        return (
            <Create {...props} transform={transform}>
                // Your inputs
            </Create>
        );
    };
    

推荐阅读