Certains éléments hors du cadre de l'application React doivent parfois être mis à jour. Par exemple: le titre du document (affiché dans l'onglet du navigateur), une valeur stockée dans le localStorage, des requêtes http, etc. Afin de gardez la valeur de ces éléments synchronisés avec celle d'une variable React, il est possible d'utiliser les hooks d'effet.
Les fonctions attribuées à ces hooks sont exécutées après chaque mise à jour des variables et du DOM par React. Ainsi, il est possible d'avoir accès aux valeurs les plus récentes des variables.
Déclaration
Par exemple, afin de stocker la valeur de la variable name
dans localStorage dès que celle-ci change, il est possible de faire:
React.useEffect(() => {
window.localStorage.setItem('name', name);
});
Exemple concret
Modifiez le nom en tapant un nouveau et remarquez comment celui-ci reste malgré que vous rechargiez la page, car sa valeur est stockée à chaque changement dans le localStorage.
Tableau de dépendances
useEffect
exécutées après chaque mise à jour des variables et du DOM par React. Cependant, il n'est pas toujours pertinent qu'il soit exécuté. Par exemple, si la variable age
change alors que seule la variable name
est référencée à l'intérieur de useEffect
, il n'y a pas de raison que useEffect
soit exécuté. Le seul impact sera une diminution de performance.
Pour éviter cette situation, il est possible de spécifier un tableau de dépendances correspondant aux variables référencées dans le hook. Ainsi, useEffect
n'est exécuté que si la valeur de la variable name
change et ignore les changement de la valeur de age
.
React.useEffect(() => {
window.localStorage.setItem('name', name);
}, [name]);