是的验证:具有多个依赖字段的循环依赖错误
Yup validation: cyclic dependency error with multiple dependent fields
我正在使用 Yup 来验证 3 个相互依赖的字段。
fieldA
、fieldB
和 fieldC
。它们是数字,其中至少有一个值必须 > 0。
我正在尝试这样解决:
myFields: Yup.object().shape(
{
fieldA: Yup.number().when(['fieldB', 'fieldC'], {
is: (fieldB, fieldC) =>
fieldB < 1 && fieldC < 1,
then: Yup.number().min(
1,
'some error message'
),
}),
fieldB: Yup.number().when(['fieldA', 'fieldC'], {
is: (fieldA, fieldC) =>
fieldA < 1 && fieldC < 1,
then: Yup.number().min(
1,
'some error message'
),
}),
fieldC: Yup.number().when(['fieldB', 'fieldA'], {
is: (fieldB, fieldA) =>
fieldB < 1 && fieldA < 1,
then: Yup.number().min(
1,
'some error message'
),
}),
},
['fieldA', 'fieldB', 'fieldC']
),
这只适用于 fieldA
和 fieldB
两个字段,其中每个字段只传递了另一个字段 when(...
但自从引入第三个字段后,我现在有了一个循环依赖。我是否需要一种完全不同的方法,即。外部验证函数还是我在这里遗漏了一些细节?
您的依赖项数组错误,需要为 [[string, string]],因此您不能将所有 3 个字段都绑定到其中。您必须组合使用
[['fieldA', 'fieldB'], ['fieldA', 'fieldC'], ['fieldB','fieldC']]
我正在使用 Yup 来验证 3 个相互依赖的字段。
fieldA
、fieldB
和 fieldC
。它们是数字,其中至少有一个值必须 > 0。
我正在尝试这样解决:
myFields: Yup.object().shape(
{
fieldA: Yup.number().when(['fieldB', 'fieldC'], {
is: (fieldB, fieldC) =>
fieldB < 1 && fieldC < 1,
then: Yup.number().min(
1,
'some error message'
),
}),
fieldB: Yup.number().when(['fieldA', 'fieldC'], {
is: (fieldA, fieldC) =>
fieldA < 1 && fieldC < 1,
then: Yup.number().min(
1,
'some error message'
),
}),
fieldC: Yup.number().when(['fieldB', 'fieldA'], {
is: (fieldB, fieldA) =>
fieldB < 1 && fieldA < 1,
then: Yup.number().min(
1,
'some error message'
),
}),
},
['fieldA', 'fieldB', 'fieldC']
),
这只适用于 fieldA
和 fieldB
两个字段,其中每个字段只传递了另一个字段 when(...
但自从引入第三个字段后,我现在有了一个循环依赖。我是否需要一种完全不同的方法,即。外部验证函数还是我在这里遗漏了一些细节?
您的依赖项数组错误,需要为 [[string, string]],因此您不能将所有 3 个字段都绑定到其中。您必须组合使用
[['fieldA', 'fieldB'], ['fieldA', 'fieldC'], ['fieldB','fieldC']]