我的Yup验证Schema存在什么问题?Formik表单提交报错排查
问题原因与解决办法
问题根源
你给输入框设置的name属性用了数组下标格式(比如securityQuestions.questions[0]),但你的数据模型和Yup Schema里,questions、answers都是键为0、1的对象类型。Formik会把带[]的name解析成数组结构,提交时会将questions/answers转成数组,这和Yup验证的对象类型不匹配,直接导致类型错误。
解决办法
把输入框的name属性改成对象属性的写法,用.代替[]来访问对象的数字键:
- 原
securityQuestions.questions[0]→ 改为securityQuestions.questions.0 - 原
securityQuestions.answers[0]→ 改为securityQuestions.answers.0 - 第二个字段同理改成
securityQuestions.questions.1、securityQuestions.answers.1
示例代码:
{/* 下拉框示例 */} <Field name="securityQuestions.questions.0" as="select"> <option value="">请选择问题</option> {/* 其他选项 */} </Field> {/* 输入框示例 */} <Field name="securityQuestions.answers.0" placeholder="请输入答案" />
额外注意
确保Formik的initialValues严格匹配你的数据模型结构,避免初始值类型不一致引发的隐性问题:
const initialValues = { securityQuestions: { questions: { 0: '', 1: '' }, answers: { 0: '', 1: '' } } };
内容的提问来源于stack exchange,提问作者Seva
相关产品推荐
相关产品推荐

