Estoy usando Formik+Yup para crear un formulario y validación. Mi formulario es de varias páginas y tiene el botón siguiente, que debe desactivarse hasta que todos los campos obligatorios se llenen correctamente (sin error de validación). Todo fue bastante simple (solo estaba usando validateOnMount y el botón de desactivación solo con !formik.isValid) hasta que llegué a la página con botones de opción que deberían mostrar otra pregunta (también con botones de opción) según su respuesta a la pregunta anterior.
Si uso validateOnMount, se ejecutan todas las validaciones (incluso las preguntas que no aparecen), por lo que es imposible activar el botón. El uso de validateOnBlur o OnChange tampoco funcionó por la misma razón. Encontré la solución solo escribiendo declaraciones 'if' realmente largas y difíciles que se ven así
disabled={ !formik.values.covidStatus || (formik.values.covidStatus === 'covidYes' && !formik.values.igTest) || (formik.values.covidStatus === 'covidYes' && formik.values.igTest === 'IgYes' && (!formik.values.testDate || !formik.values.igNumber)) || (formik.values.covidStatus === 'covidYes' && formik.values.igTest === 'IgNo' && !formik.values.covidDate) }Traté de escribir una validación personalizada para preguntas de radio y la pregunta es: ¿Es posible determinar cuándo se ejecutará la validación personalizada? Para ser precisos, quiero que la validación se ejecute solo cuando exista un campo.