问:使用<FieldArray/>中的自定义组件通过Formik <Field/>设置<TextField/>的值。
答:在使用Formik和<FieldArray/>时,可以通过自定义组件来设置<TextField/>的值。下面是一个完整的解释和示例:
Formik是一个用于构建表单的库,它可以帮助简化表单处理的过程。而<FieldArray/>是Formik提供的一个组件,用于处理数组字段。
要使用<FieldArray/>中的自定义组件设置<TextField/>的值,首先需要创建一个自定义组件来渲染<TextField/>。然后,在<FieldArray/>中使用该自定义组件。
以下是一个示例代码:
首先,导入所需的库和组件:
import { Formik, Field, FieldArray } from 'formik';
import { TextField } from '@material-ui/core';
然后,创建一个自定义组件CustomTextField来渲染<TextField/>:
const CustomTextField = ({ field, form }) => (
<TextField
{...field}
onChange={form.handleChange}
onBlur={form.handleBlur}
/>
);
接下来,在Formik中使用<FieldArray/>和自定义组件来设置<TextField/>的值:
<Formik
initialValues={{
textFieldValues: ['']
}}
onSubmit={values => {
console.log(values);
}}
>
{({ values }) => (
<Form>
<FieldArray name="textFieldValues">
{({ push, remove }) => (
<div>
{values.textFieldValues.map((textFieldValue, index) => (
<div key={index}>
<Field
name={`textFieldValues[${index}]`}
component={CustomTextField}
/>
<button type="button" onClick={() => remove(index)}>
Remove
</button>
</div>
))}
<button type="button" onClick={() => push('')}>
Add
</button>
</div>
)}
</FieldArray>
<button type="submit">Submit</button>
</Form>
)}
</Formik>
在上面的代码中,我们使用<FieldArray/>来处理名为textFieldValues的数组字段。在<FieldArray/>中,我们遍历textFieldValues数组,并为每个元素创建一个<TextField/>和一个Remove按钮。点击Remove按钮可以删除相应的<TextField/>。
点击Add按钮可以添加一个新的<TextField/>。
在提交表单时,可以通过onSubmit函数获取所有的文本字段值。
这是一个简单的例子,你可以根据自己的需求进行扩展和修改。
相关链接:
领取专属 10元无门槛券
手把手带您无忧上云