如果另一个字段具有使用对象数组的值,则有条件地要求字段
Posted
技术标签:
【中文标题】如果另一个字段具有使用对象数组的值,则有条件地要求字段【英文标题】:conditionally required field if another field has a value using array of objects 【发布时间】:2022-01-20 20:42:14 【问题描述】:我想让一个字段成为必填字段,但前提是第一个字段具有某些值。
我知道我可以做这样的事情,如果这不是对象数组,则使用 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”不接受引用,只接受字符串
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"),
),
)
)
【问题讨论】:
【参考方案1】:这个成功了
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
【讨论】:
@Sku,看看这个!! 不知道是不是 react-hook-form 的问题,这个其实是不行的 我明白了。如果我有时间,我也会在 react-hooks-form 中检查一下以上是关于如果另一个字段具有使用对象数组的值,则有条件地要求字段的主要内容,如果未能解决你的问题,请参考以下文章
如果地图值等于特定文本,则有条件地呈现 <a href> [重复]