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

Reactjs使用Yup校验两个输入值相等,解决oneOf报enums.forEach is not a function问题

报错原因

你遇到的enums.forEach is not a function报错是因为oneOf方法的入参格式不符合要求:Yup的oneOf第一个参数必须传入枚举值数组,你直接传入了字符串'password',非数组类型没有forEach方法,所以触发报错。

修复方案

要实现确认密码和密码字段的等值校验,需要用Yup.ref()引用目标字段的值,再将其传入oneOf的数组参数中,修改后的校验规则如下:

validationSchema={ 
  Yup.object({
    password: Yup.string()
      .min(8, "senha é muito curta")
      .max(30, "senha é muito longa")               
      .required("O campo senha não pode ser vazio"),
    confirmpassword: Yup.string()
      .min(8, "senha é muito curta")
      .max(30, "senha é muito longa")
      // 此处修改:用Yup.ref引用password字段,包裹在数组中作为oneOf的第一个参数
      .oneOf([Yup.ref('password')], 'senhas devem combinar')
      .required("O campo senha não pode ser vazio"),
  })
}

补充说明:Yup.ref('password')会动态获取当前表单中同层级password字段的输入值,符合oneOf的入参规则后就能正常校验两个字段的值是否一致。

内容的提问来源于stack exchange,提问作者Guilherme Cavenaghi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:54:03