Один из способов справиться с этим - добавить key
к двум выбранным элементам:
{!this.state.isAnySelected ?
<>
<select key="categorySelect" defaultValue="Actions">
<option>Actions</option>
<option>Category request</option>
<option>Add new review</option>
</select>
</>
:
<>
<select key="productSelect" defaultValue="Actions">
<option>Actions</option>
<option>Add new product</option>
<option>View product</option>
</select>
</>
}
Эффектом этого будет повторное монтирование select
при каждом изменении this.state.isAnySelected
.
В настоящее время, когда изменяется this.state.isAnySelected
, React просто обновляет текст параметров существующих параметров, поэтому текущий выбранный индекс не изменяется.«DefaultValue» будет влиять только на то, что выбрано при первом монтировании элемента.Два разных ключа заставляют React рассматривать их как отдельные элементы DOM, а не как изменения существующих элементов DOM, поэтому при изменении this.state.isAnySelected
предыдущий select
будет отключен, а другой смонтирован с правильным значением по умолчанию.