Afficher les erreurs Zod Refine avec React-Hook-Form
Si vous avez déjà rencontré des problèmes pour afficher correctement vos formState.errors avec React-Hook-Form, que ce soit avec Yup Test ou Zod Refine, vous êtes sur la bonne vidéo ! On va résoudre ce problème et réussir à afficher nos message d'erreur sur le formulaire.

Introduction
Dans cette vidéo, nous abordons une problématique courante pour les développeurs qui utilisent React Hook Form en combinaison avec des résolveurs tels que Zod ou Yup : l'affichage des erreurs de validation dans l'état du formulaire.
Si vous vous êtes déjà arraché les cheveux sur ce sujet, cette vidéo est faite pour vous.
Contenu
Présentation du problème
- Difficulté à afficher les erreurs de validation :
Les erreurs définies dansformState
ne s'affichent parfois pas correctement, en particulier avec des règles complexes créées via Zod. - Bug dans React Hook Form :
Même si les erreurs sont présentes dans le code, elles ne sont pas toujours visibles sur l'écran.
Solution avec Zod et ses Refine
- Création de règles personnalisées avec Zod :
- Validation d'une URL YouTube pour le champ
videoURL
. - Interdiction des URLs dans le champ
message
.
- Validation d'une URL YouTube pour le champ
- Retour des erreurs claires :
- Clé d'erreur pour
videoURL
:must be valid YouTube
. - Clé d'erreur pour
message
:no URL in message
.
- Clé d'erreur pour
const schema = z.object({
videoURL: z.string().refine((val) => isYouTubeURL(val), {
message: "must be valid YouTube",
}),
message: z.string().refine((val) => !containsURL(val), {
message: "no URL in message",
}),
});