在 React Native 中将原始值传递给 onChangeText

Pass raw value to onChangeText in React Native

在我的 React 项目中,我使用的是 Formik 库。对于输入,我使用的是其他库的 TextInputMask。

export default function Calc() {
return (
    <Formik
        initialValues={{ monthly_rental: '', }}
    >
        {(props) => (
            <View>
                <Text>Monthly rental</Text>
                <TextInputMask
                    type={"money"}
                    options={{
                        precision: 0,
                        separator: ".",
                        delimiter: ",",
                        unit: "£",
                        suffixUnit: ""
                    }}
                    placeholder={"£500"}
                    value={props.values.monthly_rental}
                    includeRawValueInChangeText={true}
                    onChangeText={props.handleChange('monthly_rental')}
                />
            </View>
        )}
    </Formik>
  )
 }

上面的代码工作得很好,但我想要的是 onChangeText={props.handleChange('monthly_rental')} 设置原始值而不是格式化值。

我看过这段代码,但我现在不想实现它

onChangeText={(text, rawValue) => {
        this.setState({
          value: text,
          raw: rawValue
        })

所以我终于找到了。在 Formik 库中有一个名为 setFieldValue: (field: string, value: any, shouldValidate?: boolean) => void 的函数。 see here

所以我的最终解决方案是:

<TextInputMask
  type={"money"}
  options={{
    precision: 0,
    separator: ".",
    delimiter: ",",
    unit: "£",
    suffixUnit: ""
  }}
  style={globalstyles.input}
  textAlign={"center"}
  placeholder={"£500"}
  keyboardType={"decimal-pad"}
  value={props.values.monthly_rental}
  includeRawValueInChangeText={true}
  onChangeText={(maskedText, rawText) => {
    // Set RawText
    props.setFieldValue('monthly_rental', rawText)
  }}
/>