#reactjs #autocomplete #material-ui
Вопрос:
Текущее Поведение 😯
Когда ввод равен нулю, стиль выделяется серым светом (что-то вроде этого).
Вот мой текущий код
<Field
name="day"
render={({ input }) =>
<Autocomplete
options={this.days}
getOptionLabel={(option) => {
return option.toString()
}}
{...input}
onChange={(e, val) => {
input.onChange(val);
}}
isOptionEqualToValue={(option, value) => {
if (value === "" || value === option)
return true;
}}
renderInput={(params) => <TextField {...params} label="Day" variant="outlined" />}
/>
} />
Примечание : Я использую оболочку «Поле» для окончательной формы реакции (причина, по которой mui-rff еще не обновился до MUI 5.0)
Ожидаемое поведение 🤔
На этом рисунке, когда я выбираю значение, оно совпадает с массивом моего параметра, и стиль возвращается в нормальное состояние.
Контекст 🔦
Chrome: 94.0.4606.71
Комментарии:
1. Вы должны проверить эту функцию
isOptionEqualToValue
, которая возвращаетtrue
все параметры, еслиvalue
она пуста, чего не должно быть в случае пустого значения.2. Если я не использую эту функцию и возвращаю значение true, когда оно равно «null», в chrome появится предупреждение о том, что пустая строка «»»» не соответствует ни одному варианту. Но в моем случае я хочу сохранить значение по умолчанию пустым.
3. Вы можете инициализировать значение как
null
илиfirst option
в автозаполнении, чтобы избавиться от предупреждения. Некоторое обсуждение репо MUI4. Проблема в том, что у меня все еще есть проблема, и, более того, она отображается пустой из-за добавления пустой строки. Кстати, спасибо за вашу помощь.
5. Если ваше значение пусто, начальное автозаполнение будет пустым. Хотя, если вы решите выбрать какой-либо параметр, при отображении автозаполнения вы можете присвоить это значение
value
реквизиту. Например, в этой песочнице есть оба параметра: либо какое-то предварительно выбранное значение, либоnull
значение (которое прокомментировано).
Ответ №1:
Наконец я нашел решение.
Мне нужно было двигаться {...input}
в качестве первой опоры, прежде options={this.days}
чем добавлять эту опцию : value={null}
.
Позаботьтесь о том, где вы декларируете {...input}
.