在Formik中使用Yup进行onSubmit验证FieldArray的动态字段,可以按照以下步骤进行操作:
npm install formik yup
import { Formik, FieldArray } from 'formik';
import * as Yup from 'yup';
const validationSchema = Yup.object().shape({
dynamicFields: Yup.array().of(
Yup.object().shape({
fieldName: Yup.string().required('字段名不能为空'),
fieldValue: Yup.string().required('字段值不能为空'),
})
),
});
<Formik
initialValues={{ dynamicFields: [] }}
validationSchema={validationSchema}
onSubmit={(values) => {
// 处理表单提交逻辑
}}
>
{({ values, handleSubmit }) => (
<form onSubmit={handleSubmit}>
<FieldArray name="dynamicFields">
{({ push, remove }) => (
<div>
{values.dynamicFields.map((_, index) => (
<div key={index}>
<label htmlFor={`dynamicFields[${index}].fieldName`}>字段名</label>
<Field name={`dynamicFields[${index}].fieldName`} />
<ErrorMessage name={`dynamicFields[${index}].fieldName`} component="div" />
<label htmlFor={`dynamicFields[${index}].fieldValue`}>字段值</label>
<Field name={`dynamicFields[${index}].fieldValue`} />
<ErrorMessage name={`dynamicFields[${index}].fieldValue`} component="div" />
<button type="button" onClick={() => remove(index)}>
删除字段
</button>
</div>
))}
<button type="button" onClick={() => push({ fieldName: '', fieldValue: '' })}>
添加字段
</button>
</div>
)}
</FieldArray>
<button type="submit">提交</button>
</form>
)}
</Formik>
在上述代码中,通过使用FieldArray组件,可以动态地添加和删除字段。每个字段都有一个名为"fieldName"和"fieldValue"的属性,可以根据实际需求进行修改。
onSubmit={(values) => {
console.log(values);
}}
这样,当用户提交表单时,将会触发onSubmit回调函数,并打印表单的值。
以上是使用Yup进行onSubmit验证Formik中FieldArray动态字段的方法。希望对你有所帮助!如果你需要了解更多关于Formik和Yup的信息,可以访问腾讯云的相关产品和文档链接:
请注意,以上答案仅供参考,具体实现方式可能因实际需求和技术栈而有所不同。
领取专属 10元无门槛券
手把手带您无忧上云