Я искал много часов и пробовал разные вещи, но многие примеры, которые я вижу для CheckBoxGroupInput, просто имеют жестко закодированный список связанных вариантов, который немного бесполезен... Мой сценарий здесь таков, что у меня есть список тегов, которые я хочу чтобы иметь возможность ассоциироваться с продуктом, довольно обычными вещами..
мне нужно, чтобы этот список был извлечен из базы данных postgres... и эта часть, кажется, работает, и мой список выглядит нормально при первом отображении на экранах создания для реакции-администратора... Элемент управления выглядит следующим образом:
<ReferenceInput reference = "ProductRealBenefit" source = "realbenefits" sort = {{ field: 'name', order: 'ASC' }}>
<CheckboxGroupInput source = "name" />
</ReferenceInput>
Это все хорошо и хорошо до сих пор..
он отображает мой список, как и ожидалось.. моя схема настроена в соответствии с форматом для ra_data_graphql_simple... Неожиданно то, что как только я нажимаю на один из тегов, он немедленно отправляет запрос в сервер для запроса allProductRealBenefit со значением фильтра, равным идентификатору щелчка, и он добавляет дубликат этого тега щелчка в список, что нарушает элемент управления с ошибкой дублирующего ключа... я не понимаю, почему он будет отправлять запрос после того, как я щелкну в любом случае, я не пытаюсь ничего сохранить, просто собираю, какие теги будут отправлены с данными формы для создания записей ссылок, и у меня уже есть все эти данные после первоначального заполнения элемента управления.
Я предполагаю, что это не должно быть вложено в ReferenceInput, но я не вижу другого способа заполнить мои варианты результатами запроса к базе данных. Я знаю, что это смехотворно распространенная функция, и мне нужно найти способ использовать ее в нескольких местах, потому что эта функция тегов должна быть доступна в нескольких ресурсах. Я также пробовал это с AutocompleteArrayInput, и у него были похожие проблемы, поэтому я знаю проблема в том, что я должен пропустить важный шаг.... Будет здорово, если кто-то сможет указать правильное направление. Я возвращаюсь к документам, чтобы посмотреть, что я могу выкопать!





Хорошо, я отвечу еще на один из моих вопросов на случай, если кто-нибудь приземлится здесь так же вверх ногами, как и я, когда задал его... Я просто не понимал, что делает какая-то закулисная магия, поэтому я использовал это неправильно... И я нахожу документы запутанными
В моем примере выше... мой ProductRealBenefits в ссылке был отношением один ко многим, представленным в моей схеме с реальными преимуществами: [ProductRealBenefits]... Поэтому мне понадобились следующие компоненты.
<ReferenceArrayInput label = "Real Benefit Tags" source = "realbenefitsIds" reference = "ProductRealBenefit">
<CheckboxGroupInput optionValue = "id" optionText = "name" allowEmpty />
</ReferenceArrayInput>
В ra_data_graphql_simple dataProvider есть небольшая магия, которая создает для вас элемент в состоянии с именем realbenefitsIds, который вы используете в качестве источника для ReferenceArrayInput, я пытался использовать фактический объект массива реальных преимуществ, и это не сработало. Я не смог найти хороших примеров или каких-либо приличных объяснений того, как заставить это работать... Так что в конечном итоге именно Redux Dev Tools спасли меня здесь. Мне пришлось пройти через некоторые обручи в графовом сервере, чтобы заставить все это работать с поставщиком данных, отправляющим обратно diff вещи для значений фильтра GET_MANY и GET_REFERENCE_MANY, но это был просто вопрос разбора аргументов фильтра, чтобы они соответствовали тому, что ожидалось. В конце концов я напишу dataProvider, но пока это подходит.
PS .. я наблюдал какое-то странное поведение в моем CheckboxGroupInput, когда я щелкал что-то, оно дублировало любое поле, которое было нажато... Причиной этого была ошибка в типе объекта в моей схеме... Был Интерн., смешанный с Я БЫ , и, к счастью, это появилось в Redux Dev Tools и привело меня к проблеме.
Наконец.. Я собираю пример проекта в Github, который будет использовать React-Admin, GraphQL, RA_DATA_GRAPHQL_SIMPLE, Sequelize и базу данных Postgres, и я буду много комментировать, чтобы избавить его от путаницы для всех, как я. .. Ваше здоровье!!
А теперь плюс и комментарий: работает делает. Я забыл заменить ReferenceInput на ReferenceArrayInput. Я до сих пор не понимаю внутреннюю работу ${RESOURCE}Ids, но, тем не менее, я на шаг впереди. Спасибо!
О, хорошо, я только что увидел это и как раз собирался вернуться и посмотреть на это для вас... рад, что у вас все получилось!! Ваше здоровье
У меня сейчас такая же проблема с флажками. Ваше решение не сработало для меня (я борюсь с поставщиком REST), поэтому пожелайте мне удачи в определении того, что происходит, когда я нажимаю на него. Спасибо за публикацию этого вопроса и ответа.