我想在借入寄存器的基础上验证数组,如果借入寄存器为真,则数组应该验证,否则验证。
yup.object().shape({
loan_register: yup.boolean(),
loans: yup.array()
.of(
yup.object().shape({
bank_name: yup.string().required(),
bank_reg_no: yup.string().required(),
loan_amount: yup.string().required(),
})
)
})发布于 2021-06-07 21:56:25
编辑:'When loan_register === true,bank_name,bank_reg_no和loan_amount必须是字符串和必填字段。‘
您可以将该需求转换为如下代码(包括使用.when()的Yup条件验证 ):
const validationSchema = yup.object().shape({
loan_register: yup.boolean(),
loans: yup.array()
.when('loan_register', {
is: true,
then: yup.of(
yup.object().shape({
bank_name: yup.string().required(),
bank_reg_no: yup.string().required(),
loan_amount: yup.string().required(),
})
)
})
})发布于 2021-06-07 22:14:42
我认为你会想要利用.when()。通过提供基于其他属性值的条件验证检查,这恰好实现了您想要的结果。
它有一种更明确的方法,您可以在其中添加
.when('loan_register', {is: true, then: /* yup schema */ })我相信这个变化看起来像是
yup.object().shape({
loan_register: yup.boolean(),
loans: yup.array()
.when('loan_register', {
is: true,
then: yup.of(
yup.object().shape({
bank_name: yup.string().required(),
bank_reg_no: yup.string().required(),
loan_amount: yup.string().required(),
})
)
})
})发布于 2021-09-21 10:15:14
of不是yup导出成员的原因是yup首先需要知道数据的类型。只有知道of的类型后,才能使用它。
例如:array().of(),string().oneOf(),e.t.c
因此,在您的情况下,您需要提供数据类型,它将解决您的问题。
const validationSchema = yup.object({
loan_register: yup.boolean(),
loans: yup.array().when('loan_register', {
is: true,
then: yup.array().of(
yup.object({
bank_name: yup.string().required(),
bank_reg_no:yup.string().required(),
loan_amount:yup.string().required(),
}))
})
})https://stackoverflow.com/questions/67872868
复制相似问题