Comment remplacer un composant de cycle de vie avec useEffect sur React?

cover
Nov 04, 2019 2 min Follow me on Twitter

Subscribe to receive the free weekly article

Avant React 16.8, nous étions obligés d'utiliser un composant basé sur une classe pour avoir accès au cycle de vie du composant. Et maintenant, avec Hooks, nous sommes maintenant en mesure d'utiliser des composants fonctionnels pour la gestion des états, la récupération de données, etc.

1. componentDidMount

La méthode componentDidMount() s'exécute après que la sortie du composant a été rendue dans le DOM. C'est un bon endroit pour provoquer des effets secondaires.

// With ccomponentDidMount()
componentDidMount() {
    console.log('Hello World');
}

// with useEffect()
useEffect(() => {
    console.log('Hello World');
}, [])

Si nous ne transmettons pas de tableau vide à useEffect, il s'exécutera à chaque modification. Par conséquent, nous devons donner comme deuxième argument un tableau vide pour imiter le comportement componentDidMount. Il indique à React que votre effet ne dépend d'aucune valeur des accessoires ou de l'état, il n'a donc jamais besoin d'être réexécuté, useEffect ne s'exécutera qu'une seule fois après la création du composant.

2. componentDidUpdate

La méthode componentDidUpdate() est invoquée immédiatement après la mise à jour.

// With ccomponentDidUpdate()
componentDidUpdate(prevProps) {
    console.log(`Hello World ${prevProps}`);
}

// with useEffect()
useEffect(() => {
    console.log('Hello World');
}, [prevProps])

Lorsque nous transmettons une valeur (prevProps) au tableau, il indique à useEffect de s'exécuter uniquement si la valeur change.

3. componentWillUnmount

La méthode componentWillUnmount() est appelée immédiatement avant qu'un composant ne soit démonté et détruit. C'est un bon endroit pour faire des travaux de nettoyage.

// With ccomponentDidUnmount()
componentWillUnmount() {
    console.log('Hello World');
}

// with useEffect()
useEffect(() => {
    console.log('Hello World');
    return () => {
        console.log('Do some cleanup');
    }
}, [])

En renvoyant une fonction anonyme avec useEffect, elle s'exécutera avant le démontage du composant. Et le tableau vide passé comme deuxième argument indique à useEffect de s'exécuter lorsque le composant sera monté ou démonté.

#react

Support my work

Get articles in your inbox