Обновления : Поскольку это обычная форма, вы можете просто обработать ее в своем handleOnChange
слушателе событий:
handleOnChange = event => {
const { name, value, type } = event.target;
const currentTeamFormData = Object.assign({}, this.props.teamFormData, {
[name]: type === "number" ? parseInt(value, 10) : value
});
this.props.updateTeamFormData(currentTeamFormData);
};
Здесь я проверяю input.type
, чтобы handleOnChange
оставался достаточно абстрактным / универсальным, но вы можете использовать любую другую технику, чтобы различать ввод числового типа (или даже даже создавать отдельные обработчики). Идея состоит в том, чтобы увидеть, является ли это числовым типом, и если это так, используйте parseInt
для преобразования его в число.
Вот обновленная песочница (обратите внимание, я использовал setState
для демонстрации основных понятий, но это не обязательно использовать; вы можете использовать свои действия с избыточностью, как вы делаете прямо сейчас).
Старый ответ; оставив здесь для потомков
Форма Redux предлагает функцию parse
для этой цели:
<input
type="number"
onChange={this.handleOnChange}
name="wins"
value={wins}
parse={value => parseInt(value, 10)}
/>
Обратите внимание, что type="number"
не влияет на то, как форма хранит данные. Это полезно только в современных браузерах, которые могут отображать цифровую клавиатуру, что, в свою очередь, делает вашу форму более удобной для пользователя.