Estoy tratando de requerir que se seleccione una de las dos casillas de verificación en un formulario. Lo siguiente no parece funcionar de acuerdo con la documentación:
yearGroups: yup.object().shape({ primary: yup.bool().when('yearGroups.primary', { is: false, then: yup .bool() .oneOf([true], '') .required() }), secondary: yup.bool().when('yearGroups.secondary', { is: false, then: yup .bool() .oneOf([true], '') .required() }), }),Prueba este. Vea la explicación aquí :
const schema = yup.object().shape({ yearGroups: yup.object().shape( { primary: yup.bool().when("secondary", { is: (secondary) => !secondary, then: yup.bool().oneOf([true], "At least one needs to be checked") }), secondary: yup.bool().when("primary", { is: (primary) => !primary, then: yup.bool().oneOf([true], "At least one needs to be checked") }) }, [ ["primary", "secondary"], ["secondary", "primary"] ] ) });Este es algún tipo de duplicación, pero aquí hay soluciones: usar la función .test() o crear su propio Método - . addMethod
Estoy usando .addMethod en mi código, es más flexible, puede definir todos los parámetros que necesita. Una vez que lo definió en el archivo, puede llamarlo donde lo necesite.