Chargement...

Formulaires dans React

Les formulaires React sont couramment utilisés pour les pages de connexion, les formulaires d’inscription, les champs de recherche et les entrées utilisateurs complexes. L’utilisation de composants réutilisables permet d’encapsuler la logique des formulaires, de minimiser le prop drilling et d’éviter les re-renders inutiles, des problèmes fréquents dans les applications de grande taille. La maîtrise des formulaires React implique également de comprendre les composants contrôlés, la mise à jour de l’état, la gestion des événements et les hooks de cycle de vie comme useEffect pour gérer les effets secondaires.

Exemple de Base

jsx
JSX Code
import React, { useState } from 'react';

function SimpleForm() {
const [formData, setFormData] = useState({ nom: '', email: '' });

const handleChange = (e) => {
const { name, value } = e.target;
setFormData({ ...formData, [name]: value });
};

const handleSubmit = (e) => {
e.preventDefault();
console.log('Données soumises:', formData);
};

return ( <form onSubmit={handleSubmit}> <div> <label>Nom :</label> <input
type="text"
name="nom"
value={formData.nom}
onChange={handleChange}
/> </div> <div> <label>Email :</label> <input
type="email"
name="email"
value={formData.email}
onChange={handleChange}
/> </div> <button type="submit">Soumettre</button> </form>
);
}

export default SimpleForm;

Dans cet exemple de base, nous présentons un formulaire contrôlé dans React. Le hook useState initialise formData avec deux champs : nom et email. La fonction handleChange met à jour dynamiquement le champ correspondant dans l’état en utilisant l’opérateur spread, assurant l’immuabilité, cruciale pour l’optimisation du rendu dans React. La fonction handleSubmit empêche le comportement par défaut du formulaire, permettant de gérer les données de manière personnalisée, ici en les affichant dans la console.

Exemple Pratique

jsx
JSX Code
import React, { useState, useEffect } from 'react';

function AdvancedForm() {
const [formData, setFormData] = useState({ utilisateur: '', motdepasse: '' });
const [errors, setErrors] = useState({});
const [isSubmitting, setIsSubmitting] = useState(false);

const handleChange = (e) => {
const { name, value } = e.target;
setFormData({ ...formData, [name]: value });
};

const validate = () => {
};

const handleSubmit = (e) => {
e.preventDefault();
setIsSubmitting(true);
setTimeout(() => {
console.log('Formulaire soumis avec succès:', formData);
setIsSubmitting(false);
}, 1000);
}
};

useEffect(() => {
if (isSubmitting) console.log('Soumission en cours...');
}, [isSubmitting]);

return ( <form onSubmit={handleSubmit}> <div> <label>Utilisateur :</label> <input
type="text"
name="utilisateur"
value={formData.utilisateur}
onChange={handleChange}
/>
{errors.utilisateur && <span>{errors.utilisateur}</span>} </div> <div> <label>Mot de passe :</label> <input
type="password"
name="motdepasse"
value={formData.motdepasse}
onChange={handleChange}
/>
{errors.motdepasse && <span>{errors.motdepasse}</span>} </div> <button type="submit" disabled={isSubmitting}>
{isSubmitting ? 'Soumission...' : 'Soumettre'} </button> </form>
);
}

export default AdvancedForm;

📊 Tableau de Référence

React Element/Concept Description Usage Example
useState Gérer l’état interne d’un composant const [value, setValue] = useState(initialValue);
useEffect Gérer les effets secondaires et le cycle de vie useEffect(() => { console.log('Monté'); }, []);
onChange Écouter les modifications de l’utilisateur <input onChange={handleChange} />
onSubmit Gérer la soumission du formulaire <form onSubmit={handleSubmit}></form>

🧠 Testez Vos Connaissances

Prêt à Commencer

Testez Vos Connaissances

Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet

4
Questions
🎯
70%
Pour Réussir
♾️
Temps
🔄
Tentatives

📝 Instructions

  • Lisez chaque question attentivement
  • Sélectionnez la meilleure réponse pour chaque question
  • Vous pouvez refaire le quiz autant de fois que vous le souhaitez
  • Votre progression sera affichée en haut