Skip to content
✨ Les cours suivant sont disponible : Html, Css, React, Algorithme ✨
cours
✨ React Js
2.0 Fondamentaux de ReactJS
2.4 Gestion de l'état avec les hooks (useState, useEffect)

Gestion de l'état avec les hooks useState et useEffect

Dans React, la gestion de l'état est une notion essentielle pour rendre les composants dynamiques et réactifs aux changements. Les hooks useState et useEffect sont des outils puissants pour gérer l'état et les effets dans les composants fonctionnels.

useState

Le hook useState permet de déclarer et de mettre à jour l'état d'un composant fonctionnel. Il retourne une paire de valeurs : la valeur actuelle de l'état et une fonction pour la mettre à jour. Voici comment utiliser useState :

import React, { useState } from 'react'
 
function Counter() {
    const [count, setCount] = useState(0)
 
    const increment = () => {
        setCount(count + 1)
    }
 
    return (
        <div>
            <p>Compteur : {count}</p>
            <button onClick={increment}>Incrémenter</button>
        </div>
    )
}

Dans cet exemple, useState(0) initialise l'état count à 0. La fonction setCount est utilisée pour mettre à jour la valeur de count. Lorsque le bouton est cliqué, la fonction increment est appelée, ce qui incrémente la valeur de count et déclenche le rendu du composant avec la nouvelle valeur affichée.

useState peut être utilisé plusieurs fois dans un même composant pour gérer différents états. Chaque appel de useState crée une paire de valeurs distinctes pour chaque état.

useEffect

Le hook useEffect permet d'effectuer des effets de côté dans les composants fonctionnels. Un effet de côté peut être une requête réseau, la manipulation du DOM ou l'abonnement à des événements. useEffect est exécuté après le rendu initial et après chaque mise à jour de l'état.

Voici un exemple d'utilisation de useEffect :

import React, { useState, useEffect } from 'react'
 
const Timer = () => {
    const [time, setTime] = useState(0)
 
    useEffect(() => {
        const timer = setInterval(() => {
            setTime((prevTime) => prevTime + 1)
        }, 1000)
 
        return () => {
            clearInterval(timer)
        }
    }, [])
 
    return <div>Temps écoulé : {time} secondes</div>
}
 
export default Timer

Dans cet exemple, useEffect est utilisé pour mettre en place un minuteur qui s'incrémente toutes les secondes. Lorsque le composant est monté, useEffect crée un intervalle qui met à jour l'état time toutes les secondes. L'intervalle est nettoyé lorsque le composant est démonté grâce à la fonction de retour renvoyée par useEffect.

Le second argument de useEffect (ici un tableau vide []) permet de spécifier les dépendances de l'effet. Lorsque les valeurs dans le tableau changent, l'effet est exécuté à nouveau. Si le tableau est vide, l'effet est exécuté uniquement lors du montage initial.

Utilisation conjointe de useState et useEffect

Les hooks useState et useEffect peuvent être utilisés conjointement pour gérer l'état et les effets dans un même composant. Par exemple, nous pourrions utiliser useState pour déclarer un état et useEffect pour effectuer des appels API lorsqu'une valeur d'état change.

import React, { useState, useEffect } from 'react'
 
function DataFetcher() {
    const [data, setData] = useState(null)
 
    useEffect(() => {
        fetchData()
    }, [])
 
    const fetchData = async () => {
        const response = await fetch('https://api.example.com/data')
        const data = await response.json()
        setData(data)
    }
 
    return <div>{data ? <p>{data.message}</p> : <p>Chargement...</p>}</div>
}

Dans cet exemple, nous utilisons useState pour déclarer une variable d'état data initialisée à null. Au montage initial, useEffect est exécuté et appelle fetchData pour récupérer les données depuis une API. Lorsque les données sont récupérées, setData est utilisée pour mettre à jour l'état data, déclenchant ainsi un nouveau rendu avec le message affiché.

Conclusion

Les hooks useState et useEffect sont des outils clés pour gérer l'état et les effets dans les composants fonctionnels de React. useState permet de déclarer et de mettre à jour l'état, tandis que useEffect permet d'effectuer des effets de côté. Ensemble, ils offrent un moyen efficace de rendre les composants réactifs et de gérer la logique liée à l'état et aux effets.

En utilisant ces hooks, vous pouvez développer des composants fonctionnels puissants et réutilisables, en suivant les principes de composition et de séparation des préoccupations

de React. L'utilisation conjointe de useState et useEffect permet de gérer l'état local et d'effectuer des opérations asynchrones, des appels API, des abonnements, etc.

Il est important de noter que l'utilisation des hooks doit suivre les règles de dépendances et de nettoyage appropriées. Les dépendances doivent être correctement spécifiées dans le tableau du second argument de useEffect pour garantir que l'effet est exécuté au bon moment. De plus, il est essentiel de nettoyer les effets lors du démontage du composant en retournant une fonction de nettoyage dans useEffect.

En comprenant et en maîtrisant l'utilisation des hooks useState et useEffect, vous pourrez créer des composants React plus flexibles, maintenables et performants. Continuez à pratiquer et à explorer ces concepts pour approfondir vos connaissances et devenir un expert en développement React.