#reactjs #react-native #react-admin
#reactjs #react-native #react-admin
Вопрос:
У меня есть поле состояния, исходящее из моего API. Оно имеет значение в диапазоне 0-3.
мой ответ выглядит следующим образом:
{ status: 0 }
Я могу показать значение при редактировании с помощью TextInput, оно показывает значение (в данном случае 0).
Однако я хочу, чтобы оно отображалось с помощью selectInput, поскольку в режиме редактирования я хочу изменить значение статуса.
мой selectInput выглядит следующим образом:
<SelectInput label="Status" source="status" choices={[
{ id: '0', name: 'elfogadásra vár' },
{ id: '1', name: 'aktív' },
{ id: '2', name: 'inaktív' },
{ id: '3', name: 'archív' },
]}
optionText="name"
optionValue="id"
/>
К сожалению, когда я сохраняю это и обновляю свою страницу, в моем статусе не отображается текущее значение (которое в данном случае равно 0, оно должно показывать мне ‘elfogadasra var’, но оно пустое)
Что я делаю не так?
Ответ №1:
Я добился этого следующим образом
<ReferenceInput label="Country" source='country.id' reference="Country" sort={{ field: 'name', order: 'ASC' }} alwaysOn>
<SelectInput optionText="name" optionValue="id" allowEmpty />
</ReferenceInput>
Мне нужно было загрузить свои варианты из этой базы данных, хотя, однако, концепция та же … я подозреваю, что то, что вы используете для исходного кода, неверно.. Посмотрите в инструментах redux dev.. в разделе состояние -> форма -> запись-форма -> значения, и вы должны увидеть что-то вроде статуса.идентификатор, который вы должны использовать вместо источника .. у меня есть объект того же типа в моей форме country {id: 2}… но это не то, что вы используете, чтобы получить входные данные для отображения вашего существующего значения…
Ваше решение может быть таким же простым, как вызов значения diff в исходном коде, но вы узнаете, каким это должно быть, заглянув в состояние {status: 0} перед ним должно быть что-то вроде чего-то -> {status: 0}
Комментарии:
1. Не уверен, что я вас полностью понимаю… почему TextInput правильно отображает мое значение (в данном случае 0), а selectInput — нет? Оба работают из одного и того же ответа API
2. Да, но ваш текстовый ввод просто показывает 0, связанный со свойством с именем source…. у вас есть кортежи, связанные с вашим вводом select, поэтому он понятия не имеет, что делать со значением, когда вы добавляете к нему только 0 … вы смотрели в своей записи формы? возможно, вставьте информацию о значениях, полностью открытую
3. обнаружена проблема — по какой-то причине у меня был пользовательский ввод, который не позволял selectInput работать должным образом. Как только я удалил этот пользовательский ввод, мой selectInput работает нормально
Ответ №2:
Не настоящая причина, но на случай, если кто-то сталкивается с той же проблемой, стоит проверить:
Я обнаружил, что переходил initialValues
к Form
компоненту на create
и не пропустил их в edit
режиме. Вот почему он всегда сбрасывал SelectInput
‘s.