Свойство defaultValue в теге селектора не работает должным образом. У меня есть компонент формы с некоторыми полями и некоторыми полями выбора. Теперь мне нужно предварительно заполнить форму, когда кнопка редактирования нажата из другого компонента. Я передаю данные с помощью this.props.history.push({
pathname: "/Register",
prePopulate: res.data.data
});
и я получаю доступ к данным с помощью this.props.location.prePopulate.
Я устанавливаю новые значения в состояние, и поля формы загружаются с предыдущими данными. Проблема заключается в селекторах, которые не показывают ранее выбранные параметры. Я попытался использовать свойство defaultvalue и передать значение this.state.value, но оно не работает. Если я жестко запрограммирую параметр, он работает, но не тогда, когда он пытается извлечь из состояния.
<select
className = {classnames("form-control form-control-sm", {
"is-invalid": this.state.valEmergency
})}
name = "emergency"
onChange = {this.onChange}
defaultValue = {this.state.emergency}
>
<option value = "">Choose your level</option>
<option value = "PRIMARY">Primary</option>
<option value = "SECONDARY">Secondary</option>
<option value = "TERTIARY">Tertiary</option>
</select>
я добавил команду console.info(this.state) внутри функции рендеринга, и состояние печатается 2 раза. Первый раз пуст, затем компонент будет монтировать, обновляет состояние, поэтому во второй раз состояние будет заполнено правильными значениями. Поэтому я перерисовываю 2 раза.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете просто использовать свойство value и обрабатывать изменения с помощью onChange = {this.onChange}. Так что вместо defaultValue = {this.state.emergecy} используйте value = {this.state.emergency}
Если я добавлю value = {this.state.emergecy}, я не могу выбрать другой вариант из раскрывающегося списка. Он отображает параметр предварительного заполнения, но я не могу выбрать другой.
У меня было другое имя, чем значение состояния... Теперь оно работает со свойством значения!!! Большое спасибо, ребята!
попробуйте использовать forceUpdate() или ключевой атрибут для выбора тега, который будет повторно отображаться