Actualmente tengo un objeto que se parece a lo siguiente:
const initialValues = { created: { position: 1, name: 'created', type: 'timestamp', desc: 'The date and time the lead is created', mapping: { name: '', defaultValue: '', map: false } } }Me gustaría que el nombre dentro del objeto de mapeo sea obligatorio cuando el valor del mapa dentro del objeto del mapa se establece en un valor de verdadero. He intentado esto haciendo lo siguiente:
const validationSchema = yup.object({ created: yup.object().when('mapping.map', { is: true, then: yup.object({ mapping: yup.object({ name: yup.string().required('name is required') }) }) }) })Creo que no estoy haciendo un túnel lo suficiente para configurar con precisión la validación del objeto de mapeo, cualquier ayuda/sugerencia sería muy apreciada.
Encontré la solución haciendo lo siguiente:
const validationSchema = yup.object({ created: yup.object().shape({ mapping: yup.object().shape({ map: yup.boolean(), defaultValue: yup.string(), name: yup.string().when('map', { is: true, then: yup.string().required('name is required') }) }) }) })