在 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)
}}
/>
在我的 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)
}}
/>