React

Maîtriser les React Hooks avancés : useCallback, useMemo, useRef

Découvrez comment maîtriser les hooks avancés de React pour optimiser vos applications.

26 Jan 2026 3 min de lecture 6 vues

6

Lectures

3

Minutes

0

Partages

React a révolutionné le développement d'interfaces utilisateur en introduisant les composants fonctionnels et les hooks. Parmi ces hooks, useCallback, useMemo et useRef sont essentiels pour optimiser les performances de vos applications. Cet article vous plongera dans ces hooks avancés, vous montrant quand et comment les utiliser.

Comprendre les Hooks de Performance

Avant de plonger dans les détails des hooks avancés, il est crucial de comprendre pourquoi ils existent. En React, chaque fois qu'un composant se met à jour, il peut entraîner le re-rendu de ses enfants, ce qui peut s'avérer coûteux en termes de performances. Les hooks avancés permettent de contrôler ce comportement et d'éviter des recalculs inutiles.

Utiliser useCallback

useCallback est un hook qui renvoie une version mémorisée d'une fonction qui ne change que si l'une des dépendances a changé. Cela est particulièrement utile pour éviter que des fonctions soient recréées à chaque rendu, ce qui peut entraîner des re-rendus inutiles des composants enfants.

Voici un exemple d'utilisation de useCallback :

import React, { useState, useCallback } from 'react';

const Counter = () => {
    const [count, setCount] = useState(0);

    // Utilisation de useCallback pour mémoriser la fonction
    const increment = useCallback(() => {
        setCount(c => c + 1);
    }, []);

    return (
        

Count: {count}

); }; export default Counter;

Dans cet exemple, la fonction increment ne sera pas recréée à chaque rendu, ce qui peut être bénéfique lorsque cette fonction est passée en tant que prop à un composant enfant.

Optimiser avec useMemo

Le hook useMemo est utilisé pour mémoriser des valeurs calculées. Il renvoie un résultat mémorisé d'une fonction qui ne sera recalculé que si l'une des dépendances a changé. Cela peut être très utile pour éviter des calculs coûteux lors de chaque rendu.

Voici un exemple d'utilisation de useMemo :

import React, { useState, useMemo } from 'react';

const ExpensiveCalculation = ({ num }) => {
    const calculateFactorial = (n) => {
        return n <= 0 ? 1 : n * calculateFactorial(n - 1);
    };

    const factorial = useMemo(() => calculateFactorial(num), [num]);

    return 

Factorial of {num} is {factorial}

; }; const App = () => { const [number, setNumber] = useState(1); return (
); }; export default App;

Dans cet exemple, le calcul de la factorielle est mémorisé, évitant des recalculs inutiles lorsque le composant se met à jour pour d'autres raisons.

Manipuler le DOM avec useRef

Le hook useRef est utilisé pour accéder directement à un élément DOM ou pour mémoriser une valeur mutable qui ne nécessite pas de re-rendu lorsque sa valeur change. Cela peut être très utile pour des opérations sur le DOM sans provoquer de re-rendu.

Voici un exemple d'utilisation de useRef :

import React, { useRef } from 'react';

const FocusInput = () => {
    const inputRef = useRef(null);

    const focusInput = () => {
        inputRef.current.focus();
    };

    return (
        
); }; export default FocusInput;

Dans cet exemple, useRef est utilisé pour garder une référence sur un champ de saisie, permettant de le focaliser lorsque l'utilisateur clique sur le bouton.

Conclusion

Les hooks avancés de React, tels que useCallback, useMemo et useRef, sont des outils puissants qui vous permettent d'optimiser les performances de vos applications. En les utilisant judicieusement, vous pouvez réduire les re-rendus inutiles et améliorer l'expérience utilisateur.

Pour approfondir votre connaissance de React, n'hésitez pas à explorer d'autres concepts avancés et à pratiquer en créant vos propres projets. Si vous avez aimé cet article, partagez-le avec vos amis développeurs et laissez vos commentaires ci-dessous !

Tags

React Hooks Performance

Partagez cet article

Twitter Facebook LinkedIn
JY

Jordane YENO

Developpeur Full Stack passionne par le web et les nouvelles technologies

En savoir plus

Articles similaires