Я использую реагирующе-выбранную и редукционную форму для автозаполнения. Есть поле с именем listings_of
, которое представляет собой массив данных, которые мне нужно отправить на сервер. Для этого я использовал концепцию FieldArray. Данные, которые я получаю, не имеют значения и формата меток, которые ожидают реагирования-выбора, поэтому я должен использовать реквизиты getOptionLabel
и getOptionValue
. Для этого я сделал следующим образом
const renderListingsOf = ({
fields,
data,
meta: { touched, error, submitFailed }
}) => {
return (
<ul>
<li>
<button type="button" onClick={() => fields.push({})}>
Add Member
</button>
</li>
{fields.map((listing, index) => (
<li key={index}>
<button
type="button"
title="Remove Member"
onClick={() => fields.remove(index)}
/>
<Field
name={`${listing}`}
component={InputTextWithSearch}
placeholder="Search..."
options={(data && data.users.data) || []}
getOptionLabel={option =>
!isEmptyObject(option) && option.personal.first_name
}
getOptionValue={option => {
if(!isEmptyObject(option)) {
return {
_id : option._id,
first_name: option.personal.first_name,
last_name : option.personal.last_name
};
}
}}
/>
</li>
))}
</ul>
);
};
<Column>
<Query
query={GET_USERS}
variables={{
param: {
limit: 10
}
}}
>
{({ loading, data }) => {
if(loading)return 'loading...';
return (
<InputFieldWrapper styling={styling} label="Listings of">
<FieldArray
name="general.general_information.listings_of"
component={renderListingsOf}
data={data}
/>
</InputFieldWrapper>
);
}}
</Query>
</Column>
data.users.data имеет следующий объект
[
{
_id: 'sdfskfjsdkjfsd',
personal: {
first_name: 'hello',
last_name: 'hy'
}
},
{
_id: 'sdjfkjfdkjskfdjkfff',
personal: {
first_name: 'hello1',
last_name: 'hy1'
}
},
]
но при отправке значения для general.general_information.listings_of должен быть массив объектов, как показано ниже
general: {
general_information: {
listings_of: [
{
_id: 'sdfskfjsdkjfsd',
first_name: 'hello',
last_name: 'hy'
}
]
}
}
таким образом, я попытался вернуть следующий объект из getOptionValue, но он не работает, как это
general: {
general_information: {
listings_of: [
{
_id: 'sdfskfjsdkjfsd',
personal: {
first_name: 'hello',
last_name: 'hy'
}
}
]
}
}