Vi una solución disponible como Sí: ¿Cómo validar el campo solo cuando existe? requiere agregar booleanos adicionales a la forma existente, lo cual no quiero hacer.
¿Hay alguna manera de que pueda simplemente evaluar el campo en sí?
Creé un sandbox: https://codesandbox.io/s/yup-date-validation-test-opcional-self-check-906iz?file=/src/index.js
import * as yup from "yup"; const optionalCheck = yup.string().when("nickName", { is: (value) => value?.length, then: (rule) => rule.matches( /^[aA-zZ\s]+$/, `this can only have characters, no digits or symbols.` ) }); const schema = yup.object().shape({ nickName: optionalCheck, firstName: yup.string().required("required") }); schema .validate({ nickName: "11-11-1111", firstName: "aaa" }, { abortEarly: false }) .catch((err) => { console.log(JSON.stringify(err, null, 4)); console.log("-----"); console.log(err.message); }) .then(() => console.log("valid1")); Siempre obtendré Error: Cyclic dependency, node was:"nickName"
¿Alguna sugerencia?
ACTUALIZAR
¡Encontré otra solución! ¡ahora funciona! Sí, validación para un campo no obligatorio