Reactjs Formik FieldArray验证未验证

Reactjs Formik FieldArray验证未验证,reactjs,formik,Reactjs,Formik,我正在使用Formik FormArray对象,尝试使用验证似乎不起作用 即使使用简单的必需验证,也会允许提交空字段 当我添加正则表达式时,它会抛出错误 我不知道是否显示错误消息 很难调试 下面是我的示例表单的片段(抱歉,这不是完整的代码,而是全部在父容器中): const validationSchema=Yup.object().shape({ 域:是的。数组() .required(“required”) .匹配(/^(?):\/\/)([a-zA-Z0-9-\]+\)*[a-zA-Z0-

我正在使用Formik FormArray对象,尝试使用验证似乎不起作用

  • 即使使用简单的必需验证,也会允许提交空字段
  • 当我添加正则表达式时,它会抛出错误
  • 我不知道是否显示错误消息
  • 很难调试
  • 下面是我的示例表单的片段(抱歉,这不是完整的代码,而是全部在父容器中):

    const validationSchema=Yup.object().shape({
    域:是的。数组()
    .required(“required”)
    .匹配(/^(?):\/\/)([a-zA-Z0-9-\]+\)*[a-zA-Z0-9][a-zA-Z0-9-\]+\.[a-zA-Z]{2,11}?$/{
    消息:“无效域”,
    excludeEmptyString:正确,
    })
    .matches(/(www\.\124; http:\/\/\124; https:\/\/)/{
    消息:“不应包含www.http:/;/;| https:/;/;”,
    excludeEmptyString:正确,
    })
    })
    常量错误消息=({name})=>(
    {
    const error=getIn(form.errors,name)
    const touch=getIn(form.touch,name)
    返回触摸和错误?错误:null
    }}
    />
    )
    {
    ({handleChange,handleBlur,value,errors,toucted})=>(
    领域
    (
    
      {values.domains.map((域、索引、域)=>(
    • arrayHelpers.remove(索引)} > x
    • ))} arrayHelpers.push(“”)} > 添加域
    )} />
    我试图删除正则表达式验证,但没有成功。有人能推荐如何做吗? 谢谢

    关于对象数组的formik站点示例:

        const schema = Yup.object().shape({
          domains: Yup.array()
            .of(
              Yup.object().shape({
                name: Yup.string()
                  .min(4, 'too short')
                  .required('Required'), // these constraints take precedence
    
    要访问字符串数组,请执行以下操作:

           domains: Yup.array().of(
             Yup.string()
             .trim()
             .required('Required')
    

    我没有资格添加评论,但我在arrayHelper和Formik方面也遇到了一些问题。是否有可能域数组中最后一项的初始值未设置为和空字符串?如果对初始值执行某种类型的get,则会比较缺少最后一个值的数组在提交域[${index}]时包含在内。因此根据我的经验,它允许您提交表单,因为它没有初始值,除非您要单击输入,然后将该值设置为“”或者您选择键入的任何内容。

    您需要将validationSchema作为道具传递给formik,否则formik不知道它必须进行验证。检查如前所述,我没有显示全部代码,有些代码在父容器中。它仅用于其他组件,而不用于FieldArray:(iEdit?editForm(值):createItem(值))}>FieldArray存在某些问题
           domains: Yup.array().of(
             Yup.string()
             .trim()
             .required('Required')