Вам нужно изменить несколько вещей в вашем коде:
- Переместите ваш
onChange
обработчик событий за пределы метода рендеринга.
Используйте this.setState
вместо прямого изменения объекта состояния при обновлении candyPrice
.
Почему бы не изменить состояние напрямую? Когда вы изменили состояние с помощью этого this.state.candyPrice
, это вызвало странную ошибку, когда отображаемая цена конфет является значением предыдущего ввода * 5.
Прямое изменение состояния не рекомендуется, так как React
не будет знать
изменение и оно не вызовет повторного рендеринга.
Учитывая это, ваш обработчик событий должен выглядеть примерно так.
alpha = ev => {
const candies = ev.target.value;
this.setState({
[ev.target.name]: candies,
candyPrice: candies * 5
});
};
См. рабочая реализация .