有条件地验证字段,是
addShippingAddress: Yup.boolean(),
name: Yup.string().when('addShippingAddress', {
is: true,
then: (schema) => schema.required('Field is required'),
}),
但是,如果正确值比当前对象高 1 级,则此方法不起作用。
shipping: Yup.object().shape({
addShippingAddress: Yup.boolean(),
address: Yup.object().shape({
name: Yup.string().when('addShippingAddress', {
// Always says addShippingAddress is undefined, now will always set this as required, even though the addShippingAddress !== true
is: true,
then: (schema) => schema.required('Field is required'),
otherwise: (schema) => schema,
}),
是否有条件为 Yup/Formik 中的嵌套对象添加所需的验证?
"yup": "^1.2.0"
"formik": "^2.4.2",
不认为这是可能的,需要将
addShippingAddress
变量移动到与嵌套条件相同的对象中。
address: Yup.object().shape({
addShippingAddress: Yup.boolean(),
name: Yup.string().when('addShippingAddress', {
is: true,
then: (schema) => schema.required('Field is required'),
}),
// Formik Init vals
shipping: {
address: {
addShippingAddress: false,
name: '',
...
},