Section courante

A propos

Section administrative du site

useEffect

Utilise un effet
React

Syntaxe

useEffect(setup, dependencies?)

Description

useEffect est un crochet React vous permettant de synchroniser une composante avec un système externe.

Référence

useEffect(setup, dependencies?)

Appelez useEffect au niveau supérieur de votre composante pour déclarer un effet :

  1. import { useState, useEffect } from 'react';
  2. import { createConnection } from './chat.js';
  3.  
  4. function ChatRoom({ roomId }) {
  5.   const [serverUrl, setServerUrl] = useState('https://localhost:1234');
  6.  
  7.   useEffect(() => {
  8.     const connection = createConnection(serverUrl, roomId);
  9.     connection.connect();
  10.     return () => {
  11.       connection.disconnect();
  12.     };
  13.   }, [serverUrl, roomId]);
  14.   // ...
  15. }

Paramètres

Nom Description
setup La fonction contenant la logique de votre effet. Votre fonction de configuration peut également renvoyer une fonction de nettoyage (optionnelle). Lorsque votre composante est ajouté au DOM, React exécute votre fonction de configuration. Après chaque rendu avec des dépendances modifiées, React exécute d'abord la fonction de nettoyage (si vous l'avez fournie) avec les anciennes valeurs, puis la fonction de configuration avec les nouvelles. Une fois votre composante supprimé du DOM, React exécute la fonction de nettoyage.
dependencies optionnelles : La liste de toutes les valeurs réactives référencées dans le code de configuration. Les valeurs réactives incluent les propriétés, l'état et toutes les variables et fonctions déclarées directement dans le corps de votre composante. Si votre linter est configuré pour React, il vérifie que chaque valeur réactive est correctement spécifiée comme dépendance. La liste des dépendances doit comporter un nombre constant d'éléments et être écrite en ligne, comme [dep1, dep2, dep3]. React compare chaque dépendance à sa valeur précédente grâce à la comparaison Object.is. Si vous omettez cet argument, votre effet sera réexécuté après chaque rendu de la composante. Découvrez la différence entre transmettre un tableau de dépendances, un tableau vide et aucune dépendance.

Renvoie

useEffect renvoie undefined.

Avertissements

Utilisation

Connexion à un système externe

Certaines composantes doivent rester connectés au réseau, à une API de navigateur ou à une bibliothèque tierce pendant leur affichage sur la page. Ces systèmes ne sont pas contrôlés par React ; ils sont donc dits externes.

Pour connecter votre composante à un système externe, appelez useEffect au niveau supérieur :

  1. import { useState, useEffect } from 'react';
  2. import { createConnection } from './chat.js';
  3.  
  4. function ChatRoom({ roomId }) {
  5.   const [serverUrl, setServerUrl] = useState('https://localhost:1234');
  6.  
  7.   useEffect(() => {
  8.        const connection = createConnection(serverUrl, roomId);
  9.     connection.connect();
  10.        return () => {
  11.       connection.disconnect();
  12.        };
  13.   }, [serverUrl, roomId]);
  14.   // ...
  15. }

Vous devez passer deux paramètres à useEffect :

React appelle vos fonctions de configuration et de nettoyage chaque fois que nécessaire, ce qui peut se produire plusieurs fois :

Lorsque la composante ChatRoom ci-dessus est ajouté à la page, il se connecte au salon de discussion avec l'URL du serveur et l'ID du salon initiaux. Si l'URL du serveur ou l'ID du salon change suite à un nouveau rendu (par exemple, si l'utilisateur sélectionne un autre salon de discussion dans une liste déroulante), votre effet se déconnecte du salon précédent et se connecte au suivant. Lorsque la composante ChatRoom est supprimé de la page, votre effet se déconnecte une dernière fois.

Pour vous aider à détecter les bogues, React exécute les opérations de configuration et de nettoyage une fois de plus avant la configuration. Il s'agit d'un test de résistance qui vérifie que la logique de votre effet est correctement implémentée. Si cela provoque des problèmes visibles, votre fonction de nettoyage manque de logique. La fonction de nettoyage doit arrêter ou annuler l'exécution de la fonction de configuration. En règle générale, l'utilisateur ne doit pas pouvoir distinguer un appel unique à la configuration (comme en production) d'une séquence configuration → nettoyage → configuration (comme en développement). Voir les solutions courantes.

Essayez d'écrire chaque effet comme un processus indépendant et de ne considérer qu'un seul cycle de configuration/nettoyage à la fois. Peu importe que votre composante soit en cours de montage, de mise à jour ou de démontage. Lorsque votre logique de nettoyage reflète correctement la logique de configuration, votre effet peut exécuter les opérations de configuration et de nettoyage aussi souvent que nécessaire.

Remarque

Un effet vous permet de synchroniser votre composante avec un système externe (comme un service de clavardage). Ici, un système externe désigne tout morceau de code non contrôlé par React, comme :

Si vous ne vous connectez à aucun système externe, vous n'avez probablement pas besoin d'un effet.



Dernière mise à jour : Mercredi, le 10 septembre 2025