表单验证后,isValid保持为假

时间:2020-03-30 23:03:50

标签: javascript reactjs formik

我有一个自定义的验证功能,但是即使它没有返回错误,表单仍然无效。

我正在将以下属性传递给Formik:

Select *
 From  (
        Select A.stu_id
              ,B.*
         From ( 
                Select *
                      ,RN = row_number() over (partition by stu_id order by course_name) 
                 from YourTable
               ) A
         Cross Apply ( values (concat('course_',RN),course_name)
                             ,(concat('staff_',RN),staff_name)
                     ) B(Item,Value)
       ) src
 Pivot (max(Value) for Item in ([Course_1],[Staff_1],[Course_2],[Staff_2],[Course_3],[Staff_3] )) pvt

Here is a console log of the formik object after validation

如您所见,该字段已被触摸,它没有错误,但是validate={({ import_files }) => { return [...import_files.values()].length === 0 ? { import_files: 'Please choose a file to import' } : {}; }} onSubmit={onSubmit} initialValues={{ import_files: new Map([]) }} 仍然是isValid。 为什么表格仍然无效?

1 个答案:

答案 0 :(得分:0)

isValid有时会无法正常工作。 您应该考虑将验证检查切换为errors数组。

如果errors中没有错误,则一切正常。

const isValid = !Object.keys(errors).length

您可以在此公开问题中找到更多数据文件: https://github.com/jaredpalmer/formik/issues/1116