#reactjs #jsx #react-admin
#reactjs #jsx #реагировать-администратор
Вопрос:
У меня есть этот код:
<ReferenceInput label="Tipus" source="type" reference="categories" validate={ required() } >
<AutocompleteInput optionText="name" />
</ReferenceInput>
<FormDataConsumer>
{({formData, ...rest}) => {
console.log(formData)
if ( formData.type !== undefined ) {
var t = formData.type;
var myType = t.toString();
var myOptionText = `${myType}.name`
}
return (
<ReferenceArrayInput label="Categories dynamic" source={myType} reference="categories" {...rest}>
<SelectArrayInput optionText="name" />
</ReferenceArrayInput>
)
}}
</FormDataConsumer>
У меня есть данные моего API, которые выглядят следующим образом:
[
{
"21": [
{
"id": 22,
"name": "Pontgyűjtő",
"old_id": 0,
"parent_id": 21,
"type": 2
},
{
"id": 23,
"name": "Akciós",
"old_id": 1,
"parent_id": 21,
"type": 2
},
{
"id": 24,
"name": "Aranykártya",
"old_id": 2,
"parent_id": 21,
"type": 2
},
{
"id": 25,
"name": "Kedvező tankolás",
"old_id": 3,
"parent_id": 21,
"type": 2
}
],
"id": 21,
"name": "Hitelkártya",
"old_id": null,
"parent_id": null,
"type": null
},
{
"53": [
{
"id": 54,
"name": "Minta alkategória",
"old_id": 0,
"parent_id": 53,
"type": 90
}
],
"id": 53,
"name": "Minta kategória",
"old_id": null,
"parent_id": null,
"type": null
},
{
"id": 55,
"name": "Minta folyószámla kategória",
"old_id": null,
"parent_id": null,
"type": null
}
]
в журнале консоли я вижу FormData.type === мой «идентификатор», например, 21.
Я хочу получить доступ к массиву «21» с помощью моего ReferenceArrayInput, чтобы я мог выбирать из всех его подкатегорий.
Я также хочу сохранить его в исходном источнике категорий.
например, когда я использую постоянные значения для моего SelectArrayInput, моим источником являются «категории»
const choices = [
{ id: 3, name: "Bla1" },
{ id: 4, name: "Bla2" },
{ id: 5, name: "Bla3" },
{ id: 6, name: "Bla4" },
{ id: 7, name: "Bla5" },
{ id: 8, name: "Bla6" },
{ id: 9, name: "Bla7" },
{ id: 0, name: "Bla8" },
{ id: 1, name: "Bla9" },
];
<SelectArrayInput source="categories" choices={choices} optionText="name" optionValue="id" validate={ required() } allowEmpty={false} />
Таким образом, вся моя цель состоит в том, чтобы динамически выбирать варианты из конечной точки REST API categories, выбирать из нее и сохранять ее в моей исходной конечной точке REST API (которая называется «ads», в поле categories).
Я знаю, что делаю что-то не так, но даже если бы я искал это в Google, я не нашел решения. Может быть, вы могли бы помочь мне исправить то, что я делаю неправильно.
Комментарии:
1. Привет, Река, такое решение, даже если оно работает, может создать большие проблемы в будущем. Каталоги обычно создаются в отдельной таблице (ресурсе).
2. хм .. какие большие проблемы вы имеете в виду? Почему это не сработает? Что вы предлагаете? Должен ли я жестко закодировать что-то в коде, который уже находится в БД?
3. Вы одновременно управляете справочной таблицей и ссылаетесь на нее. Обычно каталоги хранятся в отдельных таблицах. Нам нужно посмотреть, какие запросы сервера отправляются от react-admin и как данные будут размещены в хранилище redux.
4. хм, хорошо… поэтому, если мои подкатегории будут поступать из другого ресурса, это легко выполнимо со стороны API, но я все еще не совсем понимаю, как я могу сохранить / сохранить / отправить данные обратно в поле объявления / категории…