UseCallback

useCallback est un Hooks (React) fourni par la bibliothèque React qui permet de mémoriser une fonction. Le but principal est d'optimiser les Performances des composants (components, React) qui dépendent de fonctions en évitant des recalculs inutiles lors de chaque render.

Lorsque tu crées une fonction à l'intérieur d'un composants fonctionnels (React) en React, cette fonction est recréée à chaque rendu du composant. Si cette fonction est passée en tant que props à un composant enfant, le composant enfant pourrait potentiellement se rerendre également, même si les données n'ont pas changé. Pour éviter ce comportement et réduire le coût des rerendus, tu peux utiliser useCallback.

Le hook useCallback prend deux paramètres :

  1. La fonction que tu veux mémoriser.
  2. Un tableau de dépendances qui indique quand la fonction doit être recalculée. Si les valeurs dans le tableau de dépendances n'ont pas changé entre les rendus, React réutilisera la fonction mémorisée au lieu d'en créer une nouvelle.

Voici un exemple en TypeScript pour illustrer l'utilisation de useCallback :

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

const MonComposant = () => {
  const [compteur, setCompteur] = useState(0);

  // Utilisation de useCallback pour mémoriser la fonction d'incrémentation
  const incrementer = useCallback(() => {
    setCompteur(c => c + 1);
  }, []); // Tableau de dépendances vide signifie que la fonction ne sera jamais recalculée

  return (
    <div>
      <p>Compteur : {compteur}</p>
      <button onClick={incrementer}>Incrémenter</button>
    </div>
  );
};

Dans cet exemple, la fonction incrementer est mémorisée et ne sera pas recréée à chaque rendu du composant MonComposant. Cela est utile surtout quand cette fonction est passée en tant que prop à des composants enfants profonds, aidant ainsi à éviter des re-renders (React) non nécessaires et à améliorer les performances de l'application.

Pour approfondir tes connaissances en développement web et en React, voici une liste de notions que tu pourrais explorer :

  1. useState : Comprendre le hook de base pour la gestion de l'état local dans un composant React.

  2. useEffect : Maîtriser ce hook permet de réaliser des Effets de bord dans les composants fonctionnels, comme les requêtes de données, les abonnements, ou les mises à jour manuelles du Document Object Model.

  3. useContext : Utiliser le contexte pour partager des données de manière globale entre plusieurs composants sans avoir à passer explicitement des props.

  4. useReducer : Un moyen plus robuste de gérer des états complexes en utilisant un réducteur, utile pour les logiques d'état qui incluent plusieurs sous-valeurs ou quand l'état suivant dépend de l'ancien.

  5. useRef : Apprendre à accéder et à manipuler directement des éléments du DOM et à conserver des valeurs mutables qui ne déclenchent pas de rendu lors de leur modification.

  6. Hooks personnalisés : Création de tes propres hooks pour extraire la logique de composant réutilisable.

  7. React.memo : Utilisation de React.memo pour optimiser les performances en mémorisant des composants pour éviter des rendus inutiles.

  8. useMemo : Comprendre comment mémoriser des valeurs coûteuses à recalculer.

  9. React Router : Gestion de la navigation dans une application React avec une approche basée sur les composants.

  10. Contexts API (React) vs Redux : Comparer ces deux approches pour la gestion de l'état global et comprendre quand utiliser l'une ou l'autre.

  11. Server-Side Rendering avec Next.js : Apprendre comment pré-rendre des pages côté serveur pour améliorer la performance initiale et le référencement.

  12. TypeScript avec React : Approfondir l'utilisation de TypeScript pour ajouter de la sûreté de type à tes applications React.

  13. Hooks avancés : Explorer des hooks moins connus mais utiles comme useImperativeHandle, useLayoutEffect, et useDebugValue.

Chacune de ces notions te permettra de mieux comprendre et d'utiliser React et le développement web moderne de manière plus efficace et performante.