@4ch23

Как в проп «value» компонента Material-ui Autocomplete передавать только value?

Постоянно сталкиваюсь с одной и той же проблемой, когда плагины для работы с выпадающими списками (комбобоксами) принимают в пропы "value" и "defaultValue" не конкретное value, а объект {label, value}. Может я что-то упускаю и так делать "правильно", а я некорректно готовлю бэк ? Если всё же мои ожидания логичны - просьба подсказать npm пакеты-обёртки над Material-UI умеющие обрабатывать оба варианта.

Пример: С бэка приходит объект пользователя
{id: 1, role_id: 2, name: "user"} (Допустим role_id=2 это "admin")

Так вот для того что бы на странице отобразилось "admin" нужно писать так:
<Autocomplete value={{label: "admin", value: 2}} options=[{label: "superadmin", value: 1}, {label: "admin", value: 2}] />


А хотелось бы:
<Autocomplete value={2} options=[{label: "superadmin", value: 1}, {label: "admin", value: 2}] />


p.s. написать одну обёртку для компонента не проблема, но есть куча сторонних библиотек, работающих именно с тем вариантом Autocomplete, что есть в материале, например тот же React-final-form. Здесь я бы скорее хотел получить осознание того, почему делают обязательной передачу label.
Спасибо!
  • Вопрос задан
  • 356 просмотров
Пригласить эксперта
Ответы на вопрос 1
Gimir
@Gimir
JavaScript dev
Ну так он работает значит, в чем сложность то? Так в компоненте достается информация из options. Если библиотека не предоставляет возможности переписать дефолтное поведение (как в react-autocomplete например, где нужно прописывать каждое действие вручную для своих данных, типа getOptions, getOptionFromOptions и т.д.), то оставьте это как есть.

Если вам нужна обертка для контроля селекта, можно как вариант использовать react-hook-form, у него есть компонент Controller, который позволяет обернуть селект из MaterialUI, плюс будет меньше рендеров.
Или сделать контролируемый селект.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы