异步验证单个redux表单字段,但不提交

时间:2018-02-28 12:36:37

标签: redux-form

问题

如何在单个表单字段上构建异步验证,这也可以触发文件级别错误,但不使用同时触发onSubmit的asyncValidation?

问题背景

我有一个Redux表单,用户可以选择:

a)手动输入地址详情

b)填写社会安全号码并从API获取所有详细信息并获取预填充的redux表单字段(wohoo,节省时间!)

c)通过选中删除所有个人详细信息字段的复选框,100%匿名。

鉴于这种设置,触发onSubmit和onBlur的asyncValidator看起来很棘手,如果获得所需的详细信息并且表单得到预填充,我不希望它们多次触发。但是,如果用户提交了无效的社会安全号码,我想触发一个字段错误。

1 个答案:

答案 0 :(得分:1)

如果您只想验证单个字段,则可以传递prop验证 带有一系列验证函数,如果有效则返回false,如果基于逻辑无效,则返回字符串错误。并将阻止提交,或在提交时显示错误。

const required = (value) => (value ? false : 'Required')
const isSSN = (value) => (willBeTrueIfSSN ? false : 'Invalid SSN')
<Field name="ssn" validate={[isSSN, required]} {...rest} />

redux-form文档中的一些好例子: https://redux-form.com/7.2.3/examples/fieldlevelvalidation/