Как использовать элемент SelectArrayInput администратора react для отправки данных на сервер в виде массива объектов, т. е. { клиенты: [идентификатор: 1, идентификатор: 2]}?

#reactjs #react-admin

Вопрос:

В react-admin у меня есть следующий ReferenceArrayInput -> > SelectArrayInput компонент, как показано ниже:

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

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

    </SimpleForm>
</Create>
 

Он работает, он получает данные из client источника, и идентификатор отображает параметры с clientName меткой.

Однако, когда форма отправлена, она отправляет на сервер следующий текст запроса:

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

Я хотел бы отправить его как:

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

 

Возможно ли это, установив какую-то определенную опцию, или я должен использовать другой компонент?

Ответ №1:

У вас есть два варианта для этого:

  • Преобразуйте данные в своем поставщике данных
  • Передайте функцию преобразования в transform опору вашего Create Edit компонента или.
     export const UserCreate = (props) => {
        const transform = (data) => ({
            ...data,
            clients: data.clients.map((id) => ({ id })),
        });
    
        return (
            <Create {...props} transform={transform}>
                // Your inputs
            </Create>
        );
    };
     

Комментарии:

1. Танск Гильдас, очень любезен!