ReferenceArrayInput внутри FormDataConsumer не возвращает данные

#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, но я все еще не совсем понимаю, как я могу сохранить / сохранить / отправить данные обратно в поле объявления / категории…