Composants contrôlés
Lorsqu’on crée un formulaire en HTML, les champs <input>, <textarea>, ou <select> gèrent généralement leur propre état (ce qu’on appelle des composants non contrôlés).
En React, la bonne pratique est d’utiliser des composants contrôlés :
Cela signifie que c’est React qui garde le contrôle sur la valeur du champ, grâce au state.
En quoi est-ce pertinent d’utiliser des composants contrôlés ?
- On peut synchroniser l’interface utilisateur (UI) avec des données internes.
- On peut valider, filtrer ou transformer les données au fur et à mesure que l’utilisateur tape.
- On garde le plein contrôle sur la logique du formulaire.
Exemple simple
Voici un champ de texte contrôlé par React :
import React from "react"
export default function App() {
const [name, setName] = React.useState("")
function handleChange(event) {
setName(event.target.value)
}
return (
<div>
<label>Nom :
<input
type="text"
value={name}
onChange={handleChange}
/>
</label>
<p>Bonjour, {name} !</p>
</div>
)
}Explication : À chaque frappe de l’utilisateur, la valeur de l’input est mise à jour dans le state, puis l’interface se re-render automatiquement avec cette nouvelle valeur.
- Le state
namecontient la valeur du champ texte. - L’attribut
value={name}relie le champ à React : c’est un composant contrôlé. - La fonction
handleChangeest appelée à chaque modification, ce qui met à jour le state avec la nouvelle valeur.
Exercice 1 — crée ton propre champ contrôlé
En observant l’enxemple ci-haut, reproduis l’exercice suivant :
- Crée un champ de type text avec une value liée à un state nommé
email. - Gère le changement de valeur avec une fonction
handleChange. - Affiche dynamiquement le texte entré en dessous de l’input.
Exercice 2 — champ mot de passe
Ajoute un deuxième champ contrôlé pour le mot de passe (password) et affiche-le en clair en dessous (à des fins de test uniquement).
En bonus : essaie de réutiliser une seule fonction handleChange pour gérer les deux champs.