ReferenceInput со вложенным CheckBoxGroupInput ведет себя странно - PullRequest
1 голос
/ 09 марта 2019

Я много часов искал и пробовал разные вещи, но во многих примерах, которые я вижу для CheckBoxGroupInput, просто есть жестко закодированный список связанных вариантов, который немного бесполезен ... Мой сценарий заключается в том, что у меня есть список теговчто я хочу иметь возможность ассоциировать с продуктом, довольно распространенные вещи ..

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

<ReferenceInput reference="ProductRealBenefit" source="realbenefits" sort={{ field: 'name', order: 'ASC' }}>
     <CheckboxGroupInput source="name" />                                                      
</ReferenceInput>

Пока все хорошо и хорошо ..

он отображает мой список, как и ожидалось ..у меня вся схема настроена в соответствии с форматом ra_data_graphql_simple ... Что неожиданно, так это то, что как только я нажимаю на один из тегов, он сразу отправляет на сервер запрос на запрос allProductRealBenefit с фильтромзначение равно идентификатору клика, и он добавляет дубликат этого кликаемого тега в список, который нарушает управлениес ошибкой дубликата ключа ... я не понимаю, почему он будет отправлять запрос после того, как я все равно нажму, я не пытаюсь сохранить что-либо, просто собрать, какие теги будут отправлены с данными формы для создания записей ссылоки у меня уже есть все эти данные после начального заполнения элемента управления ..

Я предполагаю, что, возможно, это не должно быть вложено в ReferenceInput, но я не вижу другого способа заполнить мой выбор с помощью запроса к базе данных.результат.Я знаю, что это смехотворно распространенная функция, и мне нужно будет найти способ использовать ее в нескольких местах, потому что эта функция тегирования должна быть доступна на нескольких ресурсах. Я также пробовал это с AutocompleteArrayInput, и у него были похожие проблемы, поэтому я знаю, чтопроблема в том, что я, должно быть, упускаю важный шаг .... будьте велики, если кто-то может указать в правильном направлении.я сейчас вернусь к документам, чтобы посмотреть, что я могу откопать!

1 Ответ

0 голосов
/ 13 марта 2019

Хорошо, я отвечу на еще один мой вопрос, если кто-то приземлится здесь так же, как и я, когда я его спросил ... Я просто не понимал, что делала магия за кулисами, поэтому я использовал это неправильно ... И я нахожу документы, сбивающие с толку

В моем примере выше ... мои ProductRealBenefits в ссылке были отношения один ко многим, представленные в моей схеме с realbenefits: [ProductRealBenefits] ... Поэтому мне нужны были следующие компоненты.

<ReferenceArrayInput label="Real Benefit Tags" source="realbenefitsIds" reference="ProductRealBenefit">
    <CheckboxGroupInput  optionValue="id" optionText="name" allowEmpty />
</ReferenceArrayInput>

Есть немного волшебства в ra_data_graphql_simple dataProvider, который создает для вас элемент в состоянии с именем realbenefitsIds, который вы используете в качестве источника для ReferenceArrayInput, я пытался использовать фактический объект массива realbenefits, и это не было буду работать Я не мог найти хороших примеров или каких-либо приличных объяснений того, как заставить это работать ... Так что в конечном итоге именно Redux Dev Tools спас мне бекон. Мне пришлось перепрыгнуть через несколько обручей на графическом сервере, чтобы заставить все это работать с провайдером данных, отправляющим обратно diff для значений фильтра GET_MANY и GET_REFERENCE_MANY, но это был всего лишь вопрос анализа аргументов фильтра, чтобы соответствовать тому, что ожидал sequelize. В конце концов, я в конечном итоге напишу dataProvider, но пока что это отвечает всем требованиям.

PS .. я видел странное поведение в моем CheckboxGroupInput, когда я щелкал по чему-то, что он дублировал любой ящик, по которому щелкнули ... Причиной этого была ошибка в типе объекта в моей схеме ... Был Int смешался с ID , и, к счастью, это появилось в Redux Dev Tools и привело меня к проблеме.

И наконец .. Я собираю пример проекта в Github, который будет использовать React-Admin, GraphQL, RA_DATA_GRAPHQL_SIMPLE, Sequelize и базу данных Postgres, и я прокомментирую это много, чтобы исключить некоторую путаницу для всех как я ... ура !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...