表单验证后isValid仍为false。

3
我有一个自定义验证函数,但即使它没有返回错误,表单仍然无效。
我正在将以下属性传递给Formik:
validate={({ import_files }) => {
    return [...import_files.values()].length === 0
        ? { import_files: 'Please choose a file to import' }
        : {};
}}
onSubmit={onSubmit}
initialValues={{ import_files: new Map([]) }}

这里是在验证后 Formik 对象的控制台日志

您可以看到该字段已被触摸,它没有错误,但是 isValid 仍然为 false。 为什么表单仍然无效?

1个回答

6

isValid 有时会出现意料之外的问题。您应该考虑将验证检查切换到 errors 数组。

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

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

您可以在此开放问题中找到更多细节: https://github.com/jaredpalmer/formik/issues/1116

1
这个方法有效,我已经阅读过那个问题,但它似乎与我的问题不同,在那个问题中,他们将字段的错误设置为未定义,而不是返回一个空的错误对象。 - CharlesD
我不得不使用旧版本的Formik,这是最简单的解决方案。 - minlare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接