created: 2021-11-22T08:03:49.000Z

react-admin ですこし複雑なデータをPOSTしたい場合

たとえば、こんな感じのネストした要素があるJSONをPOSTしたい場合。

{
    "id": 123,
    "name": {
        "first": "yoshida",
        "last": "shigeru"
    }
}

こんな感じで、ドット区切りでsourceを定義すればよい。

<SimpleForm>
    <TextInput source="id"/>
    <TextInput source="name.first"/>
    <TextInput source="name.last"/>
</SimpleForm>

もっと複雑なデータ構造をPOSTしたい場合

transform 属性を使う。

FormData を引数とする関数を定義できて、これがPOST直前に呼ばれるようにできる。 この関数はPromiseを返すこともできるとのこと。

export const UserCreate = (props) => {
    const transform = data => ({
        ...data,
        fullName: `${data.firstName} ${data.lastName}`
    });
    return (
        <Create {...props} transform={transform}>
            ...
        </Create>
    );
}