You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

我的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 14:35:03