Développeur FullStack & Devops

Notes et mémos techniques

React hooks

A hook is a function provided by React that let’s you hook into react features from your function components Dan Abramov (React Conf 2018)

Les Hooks ont été introduits en 2018 pour :

  • alléger la syntaxe pour créer des composants, ce sont désormais de simple fonctions
  • éviter les lourdeurs liées au fonctionnement des classes avec leurs lifecycle methods
  • mieux rassembler la logique du code au sein d’un même composant (éclaté dans les différents lifecyle methods des classes)
  • permettre de créer un moyen de partager du code devant gérer un état local avec les custom hooks

UseState

UseState est l’un des 1er hooks introduit dans React v16.8.
Il permet de disposer d’un state au sein d’un function component, là où une classe était nécessaire avec toute la plomberie qui allait avec (déclarer un objet state initial, appeler super( ) dans le constructeur, binding du this pour les méthodes etc.).

import React, { useState } from "react";

function blah(props) {
  const [couleur, setCouleur] = useState("gris");

  return <p>couleur</p>;
}

UseEffect

Utilité

UseEffect(est un hook permettant de dire à React ce que ce composant doit faire après son rendu initial.

Il compense les lifecyle methodes componentDidMount( ), componentWillUnmount( ) et componentDidUpdate( ) qui permettent de gérer des side effect (requête ajax, logging, modif du DOM, gestion d’event listeners etc.).

UseEffect est placé à l’intérieur du composant de façon à avoir accès aux states et props (scope de la fonction, closures).

Usage

UseEffect est exécuté par défaut après chaque mount (et donc aussi après chaque re-render <=> unmount puis mount).

On peut utiliser UseEffect plusieurs fois dans un même composant pour la séparer des responsabilités (SRP) et contrôler leurs exécutions vis à vis des states dont dépendent chaque UseEffect.

Re-rendu

Pour éviter l’exécution systématique du side effect, il faut passer un 2ème argument optionnel, qui est un tableau de dépendances avec les states dont dépends l’éxécution de la fonction.
Pour un re-rendu unique indépendant d’un state, il suffit de passer un tableau vide.

Nettoyage à l’unmount

Lorsqu’un composant est démonté, il peut être utile d’avoir une phase de nettoyage équivalente au componentWillUnmount( ), nous permettant par ex de supprimer les enventListeners pour éviter les fuites mémoires, il est possible de retourner une fonction au sein de l’effet.

import React, { useState, useEffect } from "react";

function blah(props) {
  const [couleur, setCouleur] = useState("gris");

  useEffect(() => {
    window.title = `La nouvelle tendance est ${couleur}`;
  }, [couleur]);
}

UseContext

React dispose d’un hook dédié à la consommation du context permettant de partager de la data dans une arborescence complète.

Global

Les hooks doivent être utilisés tout en haut de la fonction et pas dans un bloc if, for ou autre.

javascript
react
hooks
programmation
rédigé le 10/11/20, mis à jour le 25/01/22 par Behrouze
A proposCheat SheetsOutilsVidéos