Если вы поместите выбранную опцию для каждого <select>
в состояние, то вы можете сбросить их все в методе changedPersonCount
.
Я обновил вашу ссылку в песочнице: https://codesandbox.io/s/6w54qj2y2z
Объяснение того, что я изменил
Добавлены выбранные параметры в состояние:
this.state = {
personCount: 0,
selectedOptions: {}
};
Реализована функция addMeal (не стесняйтесь изменять ее, чтобы включить любую функцию, которую вы хотелитакже сделать, когда они выбрали опцию)
addMeal = (index, value) => {
this.setState(prevState => ({
selectedOptions: { ...prevState.selectedOptions, [index]: value }
}));
};
Получить выбранное значение для каждого <select>
в цикле
...
for (let i = 0; i < this.state.personCount; i++) {
const selectedValue = this.state.selectedOptions[i] || 0;
...
Измените <select>
, чтобы использовать значение из состоянияи вызвать addMeal с параметрами при изменении
<select
onChange={e => {
this.addMeal(i, e.target.value);
}}
name={i}
value={selectedValue}
>
Удален атрибут selected
по умолчанию <option>
<option value={0}>Meal #{i + 1}</option>