Javascript 如何在React';输入的onChange事件?

Javascript 如何在React';输入的onChange事件?,javascript,reactjs,Javascript,Reactjs,您如何处理子React输入控件中的小数,以便您能够成功地输入例如“0.01”(最终用户箭头导航等不带奇数) 情景: 具有处理包含十进制属性的对象状态的父组件 子控件是值为{this.props.whatever}的输入控件 来自客户端的输入是一个字符串,因此输入的onChange/handleChange方法必须将输入转换为该.props.onChange(value)之前的十进制数 例如: handleChange: function(event) { var value = even

您如何处理子React输入控件中的小数,以便您能够成功地输入例如“0.01”(最终用户箭头导航等不带奇数)

情景:

  • 具有处理包含十进制属性的对象状态的父组件
  • 子控件是值为{this.props.whatever}的输入控件
  • 来自客户端的输入是一个字符串,因此输入的onChange/handleChange方法必须将输入转换为该.props.onChange(value)之前的十进制数
  • 例如:

    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!