#autocomplete #material-ui
#автозаполнение #материал-пользовательский интерфейс
Вопрос:
Согласно документам, компонент автозаполнения не имеет различия между опцией и фактическим значением.
У меня есть список опций в виде объектов с идентификаторами. Когда я выбираю опцию, я хочу получить ее идентификатор в качестве значения, а не сам объект. Кроме того, когда я устанавливаю значение автозаполнения, я хочу передать только идентификатор.
Возможно ли это?
<Autocomplete
options={[{id: 1, label: 'foo'}, {id: 2, label: 'bar'}]}
value={1}
onChange={(_, value) => { /* value should be number (id) */ }}
/>
Обновление: метка опции должна оставаться настраиваемой
Ответ №1:
Чао, к сожалению, значение в onChange
событии возвращает одно из options
выбранных. Таким образом, невозможно вернуть только один атрибут элемента.
Единственное, что вы можете сделать, это использовать value.id
:
<Autocomplete
options={[
{ id: 1, label: "foo" },
{ id: 2, label: "bar" }
]}
getOptionLabel={(option) => option.label} // this to show label on Autocomplete
getOptionSelected={(option, value) => option.id === value.id} // this to compare option on id value
onChange={(event, value) => console.log(value.id)} // here access to id property of value object
...
/>
Вот пример codesandbox.
Комментарии:
1. Спасибо за предложение, в этом случае идентификатор будет отображаться как метка опции, а не как фактическое свойство метки. Я прояснил свой вопрос
2. @amankkg Я обновил свой ответ (и codesandbox). Но я думаю, вы уже знаете, что я написал 🙂