Как отформатировать текст выбора в поле ReferenceInput в реагировать-администратора? - PullRequest
2 голосов
/ 22 января 2020

Поле ReferenceInput в сочетании с SelectInput позволяет заполнять тексты опций из столбца ссылочного ресурса, давая имя столбца следующим образом:

<ReferenceInput label="Location name" source="id" reference="Location">
 <SelectInput optionText={"building"} />
</ReferenceInput>

Я хотел бы объединить опцию текст из нескольких столбцов, но я не знаю, как получить доступ к текущей записи. Я хочу добиться чего-то вроде этого кода (это, конечно, не работает, просто чтобы показать, что я имею в виду):

<ReferenceInput label="Location name" source="id" reference="Location">
 <SelectInput optionText=`${record.building} ${record.room}` />
</ReferenceInput>

1 Ответ

0 голосов
/ 23 января 2020

optionText также принимает функцию, поэтому вы можете формировать текст опции по своему желанию:

const choices = [
   { id: 123, first_name: 'Leo', last_name: 'Tolstoi' },
   { id: 456, first_name: 'Jane', last_name: 'Austen' },
];
const optionRenderer = choice => `${choice.first_name} ${choice.last_name}`;
<SelectInput source="author_id" choices={choices} optionText={optionRenderer} />

optionText также принимает элемент реагирования, который будет клонирован и получит соответствующий выбор в качестве record проп. Здесь вы можете использовать полевые компоненты.

const choices = [
   { id: 123, first_name: 'Leo', last_name: 'Tolstoi' },
   { id: 456, first_name: 'Jane', last_name: 'Austen' },
];
const FullNameField = ({ record }) => <span>{record.first_name} {record.last_name}</span>;
<SelectInput source="gender" choices={choices} optionText={<FullNameField />}/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...