MUI Autocomplete 'defaultValue' не работает при использовании с контроллером формы реакции

Я пытаюсь использовать автозаполнение MUI с формой реакции. Я обернул компонент автозаполнения в React Hook Form's Controller. Когда я пытаюсь установить defaultValue на AutoComplete, это не работает, когда я пытаюсь изменить предустановленное значение, компонент Autocomplete ломается. Вот отрывок из моего кода.

<Controller
  name="combo-box-demo"
  control={control}
  defaultValue={top100Films.find(film => film.year === selectedFilmYear)}
  as={
    <Autocomplete
      id="combo-box-demo"
      options={top100Films}
      getOptionLabel={option => option.title}
      style={{ width: 300 }}
      renderInput={params => (
        <TextField {...params} label="Combo box" variant="outlined" />
      )}
    />
  }
/>

Ссылка рабочего демонстрационного кода на песочницу находится здесь.

1 ответ

Решение

Вам следует добавить onChange подпирать Controller и вернуть выбранное значение объекта

Также вы можете реализовать getOptionSelected Автозаполнение

export default function ComboBox() {
  const { control } = useForm({});
  const [selectedFilmYear, setSelectedFilmYear] = React.useState(1994);
  return (
    <Controller
      name="combo-box-demo"
      control={control}
      defaultValue={top100Films.find(film => film.year === selectedFilmYear)}
      onChange={([val, obj]) => obj}
      as={
        <Autocomplete
          id="combo-box-demo"
          options={top100Films}
          getOptionSelected={(obj, newval) => obj.name === newval.name}
          getOptionLabel={option => option.title}
          style={{ width: 300 }}
          renderInput={params => (
            <TextField {...params} label="Combo box" variant="outlined" />
          )}
        />
      }
    />
  );
}

Изменить ФОРМУ ЗНАЧЕНИЯ

Другие вопросы по тегам