React v16, formik, sí.
Estoy creando un formulario en el que un usuario primero debe seleccionar su estado. este es un campo de selección.
Hay un segundo campo para la licencia, que requerirá una validación diferente según el estado. Tengo una lista de valores de expresiones regulares que funcionan bien si agrego uno directamente a Sí. por ejemplo:
export const form = Yup.object().shape({ state: Yup.string().required(), license: Yup.string() .when("required", { is: (required) => required === true, then: Yup.string() .required("This field is required") .matches(/^[0-9]{14}$/, "Please enter the ID in the proper format"), }),el código anterior, expresión regular codificada, funciona muy bien.
la pregunta es ¿cómo puedo devolver un valor de expresión regular en lugar de /^[0-9]{14}$/ , desde una matriz que tengo con todos los valores de expresión regular? cuando un usuario elige un estado, quiero que esa expresión regular se cambie por su licencia.
Intenté agregar funciones (me mantuve alejado del uso de funciones de flecha globalmente en el esquema de validación de Yup debido a problemas con el enlace a esto según sus documentos en Yup
otra cosa que he intentado es agregar un campo en mi formulario llamado "regex". esto se establece cuando el usuario elige su estado en el formulario. es un campo invisible que establecí con Formik.setFieldValue que conserva la expresión regular, a la que puedo llamar desde la validación. no funciona
license: Yup.string() .when(["required", regex], { is: (required) => required === true, then: (regex) => Yup.string() .required("This field is required") .matches(regex, "Please enter the ID in the proper format"),incluso cuando intento crear una nueva expresión regular con js, no hay suerte
.matches(new RegExp(/^[0-9]{14}$/), "Please enter the ID in the proper format"),parece que puedo hacer este trabajo 1 vez, pero en los cambios de estado, el valor en formik nunca se vuelve a evaluar.
para reiterar mi pregunta: ¿Cómo puedo agregar expresiones regulares dinámicas para un campo en Sí, en función de un segundo campo?