javascript - 动态添加字段到 Formik 表单

标签 javascript reactjs formik

我需要一种在 for 循环中将字段添加到 Formik 表单的方法。我已经阅读了 FieldArray 组件的文档,但我并不真正了解如何使用它。这是我当前的代码:

function generate(values) {
        for (let i = 0; i < 10; i++) {
            values.test.push({
                hello: "world"
            })
        }
    }

    return (
        <div>
            <Formik initialValues={{test: []}}/>
            {(values)=>(
                <Form>
                    <FieldArray>
                        {()=>generate(values)}
                        <p>{JSON.stringify(values)}</p>
                    </FieldArray>
                </Form>
            )}
        </div>
    )

目前,它只是显示一个空白页面。甚至没有错误消息。

最佳答案

您上面的代码不起作用的原因是因为您在 <Formik /> 之外调用字段数组和表单

应该是:

<Formik render={({ values }) => (
  <Form>
    <FieldArray />
  </Form>
)/>

而不是:

<Formik initialValues={{test: []}} />
<Form>
  <FieldArray />
</Form>

你可以在这里看到一个更清晰的例子:https://codesandbox.io/s/1o8n593z6q

关于javascript - 动态添加字段到 Formik 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65855719/

相关文章:

javascript - 将错误数据从 Firebase 或服务器响应传递给 Formik

javascript - 将 prop 值从登录组件向下传递到路由组件

reactjs - 让DraftJS编辑器由Formik控制 : string value doesn't convert well to EditorState

javascript - Angular.js - 在调整大小事件中更改范围变量时, View 不会更新

javascript - JQuery 将页面加载到带有样式的 div 中

javascript - 如何在我的react应用程序中嵌入如下所示的代码运行器

javascript - 为什么分配了错误的索引?

javascript - 使用 onclick - jquery 在循环中按 ID 删除元素

javascript - 如何处理nodejs中同一get函数的多次调用?

html - 使用 scss 为容器创建裁剪图像效果