javascript - 动态 Formik 表单数据填充抛出受控输入错误
问题描述
我在 Formik 中创建了两个动态表单 A 和 B,每个表单都具有来自 JSON 的 Atype Btype 键的预填充数据,并且可以使用顶部的单选按钮进行查看。第一个表单的验证和初始化适用于页面的初始加载。但是,当我将视图切换到第二种形式时,它会使用第一种形式的数据进行初始化,并且验证也会失败。附加沙箱 url 以进行正确的取消操作。请帮助。附加沙盒网址https://codesandbox.io/s/frosty-voice-9i93v?file=/index.js
解决方案
您需要enableReinitialize
在 formik 字段中传递。否则当 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
推荐阅读
- momentjs - 无法使用 MomentJS 将日期字符串转换为所需格式
- python - Tkinter RSS Feed 滚动(从左到右)
- google-cloud-platform - BigQuery python 客户端使用 Streaming API 删除一些行
- c# - 如何理解不受 IO 限制的异步代码
- laravel - Laravel 多态多对多关系
- javascript - 我可以在 (function($){...}(jQuery)); 中使用 Ajax 提交请求吗?
- c - 警告 C4244:'function':从 'time_t' 转换为 'unsigned int',可能丢失数据'
- jenkins - 失败时在不同的奴隶上重新运行 Jenkins 作业
- android - 如何从我的应用程序中正确识别 AnkiDroid(或任何其他外部应用程序)的文件存储目录?
- upgrade - Xcart 应用升级包时出现错误