动态添加字段到 Formik 表单

6 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>
    )
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*idP 1

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

它应该是:

<Formik render={({ values }) => (
  <Form>
    <FieldArray />
  </Form>
)/>
Run Code Online (Sandbox Code Playgroud)

并不是:

<Formik initialValues={{test: []}} />
<Form>
  <FieldArray />
</Form>
Run Code Online (Sandbox Code Playgroud)

您可以在这里看到更清晰的示例:https ://codesandbox.io/s/1o8n593z6q