RESKUE
TECHNOLOGIES

BASED IN
PARIS, FRANCE

implementer-une-simple-utilisation-de-react-hook-form

Simplifiez vos Formulaires React avec React Hook Form

Les formulaires constituent un aspect crucial des interactions utilisateur sur le web. Ils sont le pont entre les utilisateurs et les systèmes informatiques, permettant la collecte d'informations, l'authentification, la gestion des préférences, et bien plus encore.

Qu'il s'agisse de se connecter à un espace personnel, de s'inscrire à une newsletter, ou encore de remplir un panier d'achat, les formulaires facilitent une communication bidirectionnelle entre l'utilisateur et le site web.

Dans l'univers du développement web moderne, la gestion efficace, sécurisée et intuitive des formulaires est essentielle. React Hook Form se présente comme une solution idéale, grâce à sa légèreté et sa facilité d'emploi pour les applications React.

Utilisant les hooks, cette bibliothèque réduit considérablement le volume de code nécessaire et optimise les performances par le biais de mises à jour minimales. Elle simplifie grandement l'intégration de validations de données, accélérant ainsi le développement et enrichissant l'expérience utilisateur.

Implémenter une simple utilisation de React Hook Form

Initialisation du Composant avec useForm

Tout d'abord, nous initialisons notre formulaire en utilisant le hook useForm fourni par React Hook Form. Cela permet de gérer l'état du formulaire, y compris les données saisies par l'utilisateur et les validations.

  • register : Une fonction utilisée pour "enregistrer" les champs de formulaire dans React Hook Form. En l'associant à un champ de formulaire, vous connectez ce champ au système de gestion de formulaire, permettant ainsi à React Hook Form de suivre sa valeur, ses erreurs, et de le valider.

  • handleSubmit : Une fonction qui gère la soumission du formulaire. Elle prend une fonction callback qui sera exécutée lorsque le formulaire est valide. handleSubmit s'occupe également de prévenir le comportement par défaut de soumission de formulaire, garantissant ainsi que la validation soit traitée par React Hook Form avant de procéder.

  • formState: { errors } : Un objet contenant l'état du formulaire, dont les erreurs de validation. errors est un sous-ensemble de formState qui fournit des détails sur les erreurs de validation pour chaque champ de formulaire. Il permet d'afficher des messages d'erreur personnalisés à côté des champs concernés en cas de saisie invalide par l'utilisateur.

import React from 'react';
import { useForm } from 'react-hook-form';

const LoginForm: React.FC = () => {
    const { register, handleSubmit, formState: { errors } } = useForm();
    
    return (
        <form>
            {/* Les champs du formulaire iront ici */}
        </form>
    );
}

Ajout des Champs du Formulaire

Ensuite, nous ajoutons les champs du formulaire (firstName, lastName, email). Nous utilisons register pour lier chaque champ à React Hook Form, ce qui permet à la bibliothèque de les surveiller.

<form onSubmit={handleSubmit(onSubmit)}>
    <input {...register("firstName")} />
    <input {...register("lastName")} />
    <input {...register("email")} />
    <button type="submit">Submit</button>
</form>

Définition des Règles de Validation

Avant d'intégrer la validation, définissons les règles de validation dans un objet séparé. Cela permet de garder notre code organisé et de réutiliser facilement ces règles pour d'autres formulaires si nécessaire.

const validationRules = {
    firstName: {
        required: "First Name is required",
        minLength: { value: 3, message: "Name must be at least 3 characters" },
        maxLength: { value: 50, message: "Name must be less than 50 characters" },
    },
    lastName: {
        required: "Last Name is required",
        minLength: { value: 3, message: "Name must be at least 3 characters" },
        maxLength: { value: 50, message: "Name must be less than 50 characters" },
    },
    email: {
        required: "Email is required",
        pattern: {
            value: /^[^@\s]+@[^@\s]+\.[^@\s]+$/,
            message: "Invalid email format",
        },
    },
}

Appliquer la Validation aux Champs

Maintenant, passons ces règles à register pour chaque champ correspondant. Cela indique à React Hook Form comment valider chaque champ lors de la soumission du formulaire.

<input {...register("firstName", validationRules.firstName)} />
<input {...register("lastName", validationRules.lastName)} />
<input {...register("email", validationRules.email)} />

Gestion des Erreurs

React Hook Form stocke les erreurs de validation dans formState.errors. Nous extrayons errors via la déstructuration pour afficher les messages d'erreur sous chaque champ.

<input {...register("firstName", validationRules.firstName)} />
{errors.firstName && <p>{errors.firstName.message}</p>}

<input {...register("lastName", validationRules.lastName)} />
{errors.lastName && <p>{errors.lastName.message}</p>}

<input {...register("email", validationRules.email)} />
{errors.email && <p>{errors.email.message}</p>}

Traitement de la Soumission du Formulaire

Enfin, nous définissons une fonction onSubmit qui sera appelée avec les données du formulaire lors de la soumission réussie, après que toutes les validations soient passées.

const onSubmit = data => {
    console.log(data);
};

Et nous nous assurons que notre formulaire appelle cette fonction lors de la soumission en passant handleSubmit(onSubmit) à l'attribut onSubmit du formulaire.

<form onSubmit={handleSubmit(onSubmit)}>

Formulaire final:

Ce code définit un composant de formulaire de connexion en utilisant React Hook Form. Les règles de validation sont importées et appliquées à chaque champ du formulaire (firstName, lastName, email) via la fonction register.
Lors de la soumission, handleSubmit appelle la fonction onSubmit pour traiter les données.
Les erreurs de validation sont gérées et affichées à côté de chaque champ concerné grâce à l'objet errors.

import React from 'react';
import { useForm } from 'react-hook-form';
import validationRules from './ValidationRules'

const LoginForm: React.FC = () => {
    const { register, handleSubmit, formState: { errors } } = useForm<FormData>();

    const onSubmit = data => {
        console.log(data);
    };

    return (
        <form onSubmit={handleSubmit(onSubmit)}>

            <input {...register("firstName", validationRules.firstName)} />
            {errors.firstName && <p>{errors.firstName.message}</p>}

            <input {...register("lastName", validationRules.lastName)} />
            {errors.lastName && <p>{errors.lastName.message}</p>}

            <input {...register("email", validationRules.email)} />
            {errors.email && <p>{errors.email.message}</p>}

            <button type="submit">Submit</button>
        </form>
    );
}


Avec cet exemple de formulaire de connexion, nous avons vu comment React Hook Form simplifie la gestion des formulaires dans les applications React. En tirant parti de la déstructuration pour extraire register, handleSubmit, et errors de useForm, nous pouvons créer des formulaires facilement validables.

Les avantages clés de React Hook Form incluent :

  • Performance accrue : Grâce à des re-renders minimisés et une gestion efficace de l'état du formulaire.

  • Facilité de validation : L'intégration simplifiée des règles de validation améliore l'expérience utilisateur et la fiabilité des données soumises.

  • Moins de code : Réduit le boilerplate nécessaire pour le contrôle des champs de formulaire et l'affichage des erreurs.

L'efficacité et la simplicité de cette bibliothèque en font un choix privilégié pour la gestion des formulaires, améliorant à la fois l'expérience de développement et celle de l'utilisateur final.

Mar 13, 2024
LET'S GET IN TOUCH

Any tech project in mind? We'd love to share our thoughts.

or

eric@reskue.tech

+33 (0)6 18 56 17 22