Yup验证架构对象条件验证

时间:2020-10-08 12:31:27

标签: reactjs validation conditional-statements formik yup

我要说的是如果type = 1则验证成员资格对象,确实使用.when()进行了尝试,但必须使用对象的范围(仅当类型= 1时才进行验证

.withUsername("root")

1 个答案:

答案 0 :(得分:0)

解决条件字段渲染问题的一种方法是使用三进制和散布。此解决方案确实需要少量的代码重复,并且也许还有其他(更好)的方法可以由您决定是否继续研究是否需要更好的解决方案。

在此示例中,如果type === 1,则所有字段均为required,否则不是必需的,而是可选的。

 memberShip: Yup.object()
  .shape({
    ...(type === 1 ? {
      memberShipNo: Yup.string().required('MemberShip Number is required.'),
      memberShipStart: Yup.string().required('MemberShip Number is required.'),
      fee: Yup.string().required('MemberShip Number is required.')
    } : {
      memberShipNo: Yup.string(),
      memberShipStart: Yup.string(),
      fee: Yup.string()
    }),
  }),