首页 > 解决方案 > Formik Yup 模式中的循环依赖

问题描述

我的 formik 表单中有 5 个字段 field1...field5。我正在使用 Yup 进行架构验证。在给定时间,只有 field1、field2、field3 之一是强制性的。Field4 和 Field5 具有独立的验证,不依赖于其他字段。我想出了一种写法

schema = Yup.object().shape({
  field1: Yup.string().when(['field2', 'field3'], {
     is: (field2, field3) => !field2 && !field3,
     then: Yup.string().required()
}),
  field2: Yup.string().when(['field1', 'field3'], {
     is: (field1, field3) => !field1 && !field3,
     then: Yup.string().required()
}),
  field3: Yup.string().when(['field1', 'field2'], {
     is: (field1, field2) => !field1 && !field2,
     then: Yup.string().required()
}),
   field4: Yup.string().max(30, "Maximum 30 characters are allowed").required("This is a mandatory field"),
   field5: Yup.string().max(30, "Maximum 30 characters are allowed").required("This is a mandatory field")
}
,[['field1', 'field2'], ['field1', 'field3'], ['field2','field3']]
)

请注意,在倒数第二行中没有提到 field4 和 field5,因为它们不依赖于其他字段。我在倒数第二行提到了 field1,field2,field3,因为没有它,架构会引发循环依赖问题。

我的问题是:field4 和 field5 在以下模式中的位置是否正确。

标签: formikyup

解决方案


推荐阅读