我的数据结构如下所示:
{
foo: true,
bar: {
baz: [{label: 'mario', url: 'https://nintendo.com'}]
}
}
我的yup
验证器看起来像这样:
const schema = yup.object().shape({
foo: yup.boolean(),
bar: yup.mixed().when('foo', {
is: true,
then: yup.object().shape({
baz: yup.array.of(
yup.object().shape({
label: yup.string.required(),
url: yup.url().required()
})
)
}),
otherwise: yup.object().nullable(true)
})
})
但验证不适用于bar.baz
; 如果foo
是true
,如果没有为 bar 提供包含所需对象的数组,则它永远不会引发错误。
如果我将bar
验证设置为其他内容,请说:
bar: yup.mixed().when('foo', {
is: true,
then: yup.string().required()
otherwise: yup.string.nullable(true)
})
bar
它按预期抛出错误。我错过了什么?