动态Formik表单数据填充引发受控输入错误

问题描述

我在Formik中创建了两个动态表单A和B,每个表单都有来自JSON的Atype Btype键的预填充数据,并且可以使用顶部的单选按钮进行查看。第一种形式的验证和初始化对于页面的初始加载非常有效。但是,当我将视图切换到第二种形式时,它会被第一种形式的数据初始化,并且验证也将失败。附加沙盒网址以进行适当的取消脱模。请提供帮助。 Atting sandBox url https://codesandbox.io/s/frosty-voice-9i93v?file=/index.js

解决方法

您需要在formik字段内传递enableReinitialize。否则,formik组件仅在首次运行initialValue时渲染。这就是为什么它不会更新您的价值:

<Formik
        onSubmit={async (values) => {
          console.log(JSON.stringify(values,null,2));
        }}
        initialValues={
          Atype ? getInitialValues(data,"A") : getInitialValues(data,"B")
        }
        enableReinitialize
        ...rest all things here

以下是演示:https://codesandbox.io/s/patient-dust-3k9xp?file=/index.js

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...