【发布时间】:2020-03-18 02:31:58
【问题描述】:
我的 React 状态中存储了一个数字,我想使用 <input type="number" /> 对其进行编辑。这是我的尝试:
function MyNumberInput() {
const [number, setNumber] = useState(42);
return (
<input
type="number"
value={number}
onChange={event => {
setNumber(parseFloat(event.target.value)); // Convert string value to a number!
}}
/>
);
}
问题在于此代码在中间的非数字状态下失败。如果我想输入-12,我首先要输入负号。当我这样做时,onChange 处理程序触发,parseFloat("-") 返回 NaN,并且输入保持为空。作为用户,感觉我的输入被完全忽略了。
【问题讨论】:
-
parseFloat不需要,请删除 -
真的需要解析吗?
parseFloat我相信在某些极端情况下使用。 -
@iamhuynq
event.target.value是一个字符串,即使对于 type="number" 的输入也是如此。我想在状态中保存一个数字。 -
也可以使用 setNumber(Math.trunc(event.target.value))
-
那篇文章解决了您的问题吗?请提供一些反馈将不胜感激。见What should I do when someone answers my question?
标签: javascript reactjs