You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中Formik依赖输入框UI不更新问题求助

解决Formik 2.2.9中React Native联动TextInput不更新UI的问题

问题根源

  1. 类型不匹配:初始值amount和exchangeAmount都是字符串类型,但计算后的newVal是数字类型,而TextInput的value属性仅接受字符串,类型不匹配会导致UI无法正确渲染更新后的值。
  2. 空输入处理缺失:当输入框清空时,计算会产生NaN,这也会导致UI渲染异常。

修复后的代码

<Formik
    validationSchema={validationSchema}
    initialValues={{
        amount: "",
        exchangeAmount: "",
    }}
    onSubmit={(values) => handleSubmit(values)}
>
    {({
        handleChange,
        handleBlur,
        handleSubmit,
        setFieldValue,
        values,
        errors,
        touched,
    }) => (
            <ScrollView>
                <TextInput
                    placeholder="Amount"
                    keyboardType="number-pad"
                    value={values.amount}
                    onChangeText={(val) => {
                        // 处理空输入,避免NaN
                        const numericVal = val ? parseFloat(val) : 0;
                        const newExchangeVal = rate ? numericVal / rate : 0;
                        // 统一转成字符串类型
                        setFieldValue("amount", val);
                        setFieldValue("exchangeAmount", newExchangeVal.toString());
                    }}
                />

                <TextInput
                    placeholder="Exchange Amount"
                    keyboardType="number-pad"
                    value={values.exchangeAmount}
                    onChangeText={(val) => {
                        const numericVal = val ? parseFloat(val) : 0;
                        const newAmountVal = rate ? numericVal * rate : 0;
                        setFieldValue("exchangeAmount", val);
                        setFieldValue("amount", newAmountVal.toString());
                    }}
                />
            </ScrollView>
    )}
</Formik>

额外优化建议

  • 给rate添加非空/非零判断,避免出现除以0的异常。
  • 如果需要固定小数位数,可以用toFixed(n)格式化数值,比如newExchangeVal.toFixed(2).toString(),根据业务需求调整小数位数。

内容的提问来源于stack exchange,提问作者Zahir Masoodi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 16:40:19