0Pricing
React Academy · Leçon

Entrées non contrôlées avec useRef

Accéder aux valeurs des entrées DOM via des refs plutôt que l’état pour les formulaires simples.

Entrées non contrôlées avec useRef est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.

Bienvenue

Dans cette leçon, vous utiliserez des champs non contrôlés avec useRef pour accéder aux valeurs des champs DOM sans les gérer dans l'état de React.

Contrôlé ou non contrôlé

Un **champ contrôlé** a une valeur pilotée par l'état de React (value + onChange). Un **champ non contrôlé** gère sa propre valeur dans le DOM ; React la lit par l'intermédiaire d'une référence uniquement lorsque cela est nécessaire.
// Controlled
<input value={name} onChange={e => setName(e.target.value)} />

// Uncontrolled
const nameRef = useRef();
<input ref={nameRef} defaultValue="" />

Lire la valeur lors de la soumission

Avec des champs non contrôlés, lisez la valeur lorsque l'utilisateur soumet le formulaire en accédant à `ref.current.value`. Aucune mise à jour d'état ne se produit pendant que l'utilisateur saisit du texte.
function Form() {
  const nameRef = useRef();
  const handleSubmit = (e) => {
    e.preventDefault();
    console.log(nameRef.current.value);
  };
  return (
    <form onSubmit={handleSubmit}>
      <input ref={nameRef} />
      <button type="submit">Submit</button>
    </form>
  );
}

defaultValue ou value

Pour les champs non contrôlés, utilisez `defaultValue` (et non `value`) pour définir la valeur initiale. Définir `value` sans `onChange` fait émettre un avertissement à React et rend le champ accessible en lecture seule.
<input ref={nameRef} defaultValue="Initial text" />

Quand utiliser des champs non contrôlés

Les champs non contrôlés sont utiles pour : les formulaires simples où vous n'avez besoin des valeurs qu'à la soumission, les champs de fichier (que React ne peut pas contrôler) et les champs exigeant de bonnes performances, lorsque l'absence de nouveaux rendus est importante.

Réinitialiser un champ non contrôlé

Pour réinitialiser un champ non contrôlé, définissez impérativement `ref.current.value = ''`. Vous pouvez également modifier la propriété `key` du composant pour forcer React à le monter de nouveau avec un nœud DOM vierge.
// Reset imperatively
nameRef.current.value = '';

// Or remount
setFormKey(k => k + 1);
<input key={formKey} ref={nameRef} />

Plusieurs références pour plusieurs champs

Pour les formulaires comportant plusieurs champs non contrôlés, créez une référence distincte pour chaque champ. Lors de la soumission, accédez à la propriété `.current.value` de chaque référence.
const emailRef = useRef();
const passwordRef = useRef();

<input ref={emailRef} type="email" />
<input ref={passwordRef} type="password" />

Mettre le focus lors du montage

useRef est souvent utilisé pour mettre automatiquement le focus sur un champ lors du montage d'un composant. Lisez la référence dans useEffect après le montage.
const inputRef = useRef();
useEffect(() => {
  inputRef.current?.focus();
}, []);
<input ref={inputRef} />

Champs non contrôlés et validation

Valider des champs non contrôlés nécessite de lire leurs valeurs impérativement lors de la soumission. C'est plus compliqué qu'avec des champs contrôlés pour une validation en temps réel. Préférez les champs contrôlés lorsque vous avez besoin d'un retour immédiat.

Le compromis de useRef

Les champs non contrôlés évitent les nouveaux rendus, mais renoncent à la réactivité de React. Vous ne pouvez pas effectuer un rendu conditionnel en fonction de la valeur du champ en temps réel sans lire la référence et mettre l'état à jour manuellement.

Vérification rapide

Quelle propriété devez-vous utiliser pour définir une valeur initiale pour un champ non contrôlé dans React ?

Récapitulatif

Les champs non contrôlés utilisent des références pour lire les valeurs à la demande. Utilisez defaultValue pour définir les valeurs initiales, lisez ref.current.value lors de la soumission et réinitialisez le champ en effaçant la valeur de la référence ou en modifiant la clé.

À suivre

Prochaine leçon : **Champ de fichier et lecture des données d'un fichier** — vous gérerez les champs de fichier et lirez les métadonnées ainsi que les données d'image avec FileReader.

Questions Fréquemment Posées

La leçon « Entrées non contrôlées avec useRef » est-elle gratuite ?

Oui — le texte complet de « Entrées non contrôlées avec useRef » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Entrées non contrôlées avec useRef » ?

Accéder aux valeurs des entrées DOM via des refs plutôt que l’état pour les formulaires simples. Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer React Academy ?

Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Entrées non contrôlées avec useRef » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon React Academy ?

Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Entrées non contrôlées avec useRef
  2. Entrée de fichier et lecture des données
  3. Interface de téléversement par glisser-déposer
  4. Téléverser des fichiers vers une API principale
← Retour à React Academy