Tengo que validar un formulario de react utilizando YUP.
En el mismo tengo un objeto Estado: {nombre: “”}
Y otros objetos o atributos que dependen su obligatoriedad, dependiendo el valor del estado inicial.
Encontre la funcion .when que utilizo en el siguiente ejemplo
export const formValidation = Yup.object().shape({
documento: Yup.string().required("*Requerido"),
estado: Yup.object({
nombre: Yup.string().required("*Requerido"),
}),
vidautil: Yup.number()
.positive("Valor negativo")
.when("estado.nombre", {
is: (value) => value !== "Fin" && value !== "Inicio",
then: Yup.number().required("*Requerido"),
otherwise: Yup.number(),
})
});
La misma funciona perfectamente en el atributo vidautil. Pero al momento de aplicar la misma logica en un objeto o un array, ya deja de funcionar.
export const formValidation = Yup.object().shape({
documento: Yup.string().required("*Requerido"),
estado: Yup.object({
nombre: Yup.string().required("*Requerido"),
}),
vidautil: Yup.number()
.positive("Valor negativo")
.when("estado.nombre", {
is: (value) => value !== "Fin" && value !== "Inicio",
then: Yup.number().required("*Requerido"),
otherwise: Yup.number(),
}),
deposito: Yup.object({
nombre: Yup.string().when("estado.nombre", {
is: (value) => value !== "Prospeccion" && value !== "Exploracion inicial",
then: Yup.string().required("*Requerido"),
otherwise: Yup.string(),
}),
});
Por ejemplo, aqui aplico la misma logica en el objeto Departamento: {nombre: “”} y ya no funciona. Siempre me lo toma como requerido.
Desde ya, muchas gracias
Probe validarlo de varias formas, cambiando los operadores de comparación. Pero siempre me arroja el mismo error