Dans deux champs avec validation, l'un d'eux doit être demandé si l'autre n'a pas été renseigné et vice versa Faire comme ça

       email: yup.string().email().when('phone', {
        is: (phone) => !phone || phone.length === 0,
        then: yup.string().email().required(),
        otherwise: yup.string()
    }),
    phone: yup.string().when('email', {
        is: (email) => !email || email.length === 0,
        then: yup.string().required(),
        otherwise: yup.string()
    })
});

À ma façon, j'ai l'erreur suivante : "Erreur : dépendance cyclique, le nœud était : valeur"

1
Amado Pinheiro 29 janv. 2020 à 23:41

1 réponse

Meilleure réponse

Ce que vous pouvez faire est de créer une Forme

const obj = yup.object().shape({
  email: yup.string().email()
    .when('phone', {
      is: (phone) => !phone || phone.length === 0,
      then: yup.string().email().required(),
      otherwise: yup.string()
    })
  phone: yup.string()
    .when('email', {
      is: (email) => !email || email.length === 0,
      then: yup.string().required(),
      otherwise: yup.string()
    })
}, ['email', 'phone'])
2
Lucas Fabre 29 janv. 2020 à 20:45