Javascript 如何在React';输入的onChange事件?
您如何处理子React输入控件中的小数,以便您能够成功地输入例如“0.01”(最终用户箭头导航等不带奇数) 情景:Javascript 如何在React';输入的onChange事件?,javascript,reactjs,Javascript,Reactjs,您如何处理子React输入控件中的小数,以便您能够成功地输入例如“0.01”(最终用户箭头导航等不带奇数) 情景: 具有处理包含十进制属性的对象状态的父组件 子控件是值为{this.props.whatever}的输入控件 来自客户端的输入是一个字符串,因此输入的onChange/handleChange方法必须将输入转换为该.props.onChange(value)之前的十进制数 例如: handleChange: function(event) { var value = even
handleChange: function(event) {
var value = event.target.value;
this.props.onChange(toDecimalOrWhateverFunction(value));
},
...
问题:
适用于整数,但一旦您开始输入小数,则“.”和“0”项的情况会发生变化,因为在您可以添加任何以下数字之前,十进制转换会删除任何小数点和零(请记住,onChange会在每次击键时起作用),并且输入值设置为该数字的字符串表示形式(否)或“0”),因为值={this.props.whatever}
“123”或“1.14”没有问题,因为字符串分别是123和1.14。但无法执行“0.01”或“1.01”,因为在小数点可以完成之前,将分别触发到0和1
我在React JS中处理小数是错误的还是有处理这种情况的最佳实践
更新:
重复的答案不一定是一个明显的重复,因为在我为解决困惑而进行的所有搜索中,我都没有找到它。但是,它的解决方案适用于我的场景,也可以适用于实际数据与用户可能查看/输入的数据类型或格式不匹配的其他场景。根据@wiredPairie,“您需要存储字符串输入和十进制表示。字符串将存储用户键入的确切文本,另一个表示十进制值”。如果您使用派生值或需要支持将无效值输入到受控输入中,您需要一些状态来分别存储用户的文本输入和派生/验证值
有关说明和类似示例片段,请参见。如何实现
ToDecimal或WhateVerFunction
还可以提供最简单的工作示例?您需要存储字符串输入和十进制表示。字符串将存储用户键入的确切文本,另一个表示十进制值。@limelights可以像parseFloat(value)一样简单。谢谢@WiredPairie!