如果另一个字段具有使用对象数组的值,则有条件地需要字段
conditionally required field if another field has a value using array of objects
我想将一个字段设为必填,但前提是第一个字段有一些值。
我知道我可以做这样的事情,如果这不是对象数组,则使用 when,但既然是,验证就不起作用。
myFieldArray: yup.array().of(
yup.object().shape({
firstField: yup.string(),
secondField: yup.string().when("firstField", {
is: (firstField) => firstField.length > 0,
then: yup.string().required("this field is required"),
}),
})
)
我也尝试过使用 yup.ref,但是“when”不接受 refs,只接受字符串
myFieldArray: yup.array().of(
yup.object().shape({
firstField: yup.string(),
secondField: yup.string().when(yup.ref("firstField"), {
is: (firstField) => firstField.length > 0,
then: yup.string().required("this field is required"),
}),
})
)
这个有效
myArray: Yup.array().of(
Yup.object().shape({
firstField: Yup.string(),
secondField: Yup.string().when("firstField", {
is: firstField => firstField && firstField.length > 0,
then: Yup.string().required("this field is required")
})
})
)
代码沙箱 => https://codesandbox.io/s/react-formik-yup-forked-wcfkh?file=/src/App.js
我想将一个字段设为必填,但前提是第一个字段有一些值。
我知道我可以做这样的事情,如果这不是对象数组,则使用 when,但既然是,验证就不起作用。
myFieldArray: yup.array().of(
yup.object().shape({
firstField: yup.string(),
secondField: yup.string().when("firstField", {
is: (firstField) => firstField.length > 0,
then: yup.string().required("this field is required"),
}),
})
)
我也尝试过使用 yup.ref,但是“when”不接受 refs,只接受字符串
myFieldArray: yup.array().of(
yup.object().shape({
firstField: yup.string(),
secondField: yup.string().when(yup.ref("firstField"), {
is: (firstField) => firstField.length > 0,
then: yup.string().required("this field is required"),
}),
})
)
这个有效
myArray: Yup.array().of(
Yup.object().shape({
firstField: Yup.string(),
secondField: Yup.string().when("firstField", {
is: firstField => firstField && firstField.length > 0,
then: Yup.string().required("this field is required")
})
})
)
代码沙箱 => https://codesandbox.io/s/react-formik-yup-forked-wcfkh?file=/src/App.js