Yup JS验证架构缺陷

时间:2019-08-02 15:45:53

标签: javascript yup

我有一个类似的Yup模式...

code: Yup.string()
  .min(3, 'Must be at least 3 characters')
  .required('Code is required')
  .test('unique-code', 'Code is taken', productCodeValidator),

......,其中.test('unique-code'进行API调用以确认代码是唯一的。我只想在前两次通过(最小,必需)时才触发该验证器,但我找不到能做到这一点的Yup方法。

我尝试了.when,但这似乎只适用于 sibling 字段,并且在文档中我没有看到任何关于早期验证器失败时不运行后续验证器的信息。

任何帮助表示感谢,谢谢!

1 个答案:

答案 0 :(得分:1)

  

当前不可能,因为所有验证都同时运行以保持性能。也有许多其他要求。例如,这是一个类似的请求:#256(https://github.com/jquense/yup/issues/256)。   我赞成以某种方式按某种顺序处理某些或所有验证。

参考文献:

如果您在Formik中使用模式,则应定义一个自定义验证功能(https://itnext.io/simple-react-form-validation-with-formik-yup-and-or-spected-206ebe9e7dcc),然后可以在其中验证第一个条件的内联条件(例如,使用basicSchema.validate(data))以及它们是否返回是的,您可以验证另一个条件。