Fermer

décembre 10, 2024

Hooks de cycle de vie dans LWC / Blogs / Perficient

Hooks de cycle de vie dans LWC / Blogs / Perficient


Dans les composants Web Salesforce Lightning (LWC), crochets de cycle de vie jouent un rôle crucial dans la définition du comportement des composants à différentes étapes de leur cycle de vie. Que vous soyez un développeur chevronné ou un débutant, la compréhension des hooks du cycle de vie peut améliorer considérablement la façon dont vous créez des applications efficaces et interactives. Examinons en profondeur ce qu’ils sont, leurs cas d’utilisation réels et comment ils peuvent vous aider à écrire un meilleur code.

Que sont les crochets de cycle de vie ?

Les hooks de cycle de vie dans LWC sont des méthodes de rappel spéciales déclenchées au cours de différentes phases de l’existence d’un composant. De l’initialisation à la destruction, ces hooks permettent aux développeurs de contrôler :

  • Création de composants
  • Mises à jour de l’état
  • Cycles de rendu
  • Actions de nettoyage

Hooks de cycle de vie de base dans LWC

Voici un résumé des principaux hooks du cycle de vie :

  1. constructor()
    • Quand il court: Appelé lors de la création de l’instance du composant.
    • But: Initialisez l’état et les variables, mais évitez d’accéder aux éléments DOM ou aux composants enfants.
  2. connectedCallback()
    • Quand il court: Invoqué lorsque le composant est inséré dans le DOM.
    • But: récupérez des données, ajoutez des écouteurs d’événements ou initialisez des intégrations avec des systèmes externes.
  3. renderedCallback()
    • Quand il court: S’exécute après que le composant a été rendu dans le DOM.
    • But: effectuez des manipulations DOM ou initialisez des bibliothèques tierces.
  4. disconnectedCallback()
    • Quand il court: Appelé lorsque le composant est supprimé du DOM.
    • But: tâches de nettoyage telles que la suppression des écouteurs d’événements ou l’arrêt des minuteries.
  5. errorCallback(error, stack)
    • Quand il court: invoqué lorsqu’une erreur non gérée se produit dans le composant ou ses composants enfants.
    • But: implémentez le rapport d’erreurs ou l’interface utilisateur de secours.

Cas d’utilisation réels

1. Récupération de données connectedCallback()

Lors de la création d’un composant pour afficher des données en temps réel, vous pouvez récupérer des données à partir d’une méthode Apex ou d’une API externe dès que le composant est ajouté au DOM.

Exemple:

import { LightningElement, wire } from 'lwc';
import fetchAccountData from '@salesforce/apex/AccountController.getAccountData';

export default class AccountDisplay extends LightningElement {
    accounts = [];

    connectedCallback() {
        fetchAccountData()
            .then((data) => {
                this.accounts = data;
            })
            .catch((error) => {
                console.error('Error fetching accounts:', error);
            });
    }
}

Scénario réel: affichez les détails du compte d’un client lors de la connexion à un portail Salesforce.

2. Initialisation du DOM dans renderedCallback()

Si vous utilisez une bibliothèque tierce comme Graphique.jsvous initialiserez la bibliothèque après le rendu du composant, en vous assurant que le DOM est prêt.

Exemple:

import { LightningElement } from 'lwc';
import Chart from 'chart.js';

export default class ChartComponent extends LightningElement {
    renderedCallback() {
        const canvas = this.template.querySelector('canvas');
        if (canvas) {
            new Chart(canvas, {
                type: 'bar',
                data: {
                    labels: ['Red', 'Blue', 'Yellow'],
                    datasets: [
                        {
                            label: 'Votes',
                            data: [12, 19, 3],
                            backgroundColor: ['red', 'blue', 'yellow'],
                        },
                    ],
                },
            });
        }
    }
}

Scénario réel: Créez des graphiques dynamiques pour les tableaux de bord de vente ou de marketing.

3. Nettoyage dans disconnectedCallback()

Lorsque votre composant ajoute des écouteurs d’événements globaux, il est essentiel de les supprimer lorsque le composant est détruit.

Exemple:

import { LightningElement } from 'lwc';

export default class KeyboardListener extends LightningElement {
    handleKeyPress = (event) => {
        console.log('Key pressed:', event.key);
    };

    connectedCallback() {
        window.addEventListener('keydown', this.handleKeyPress);
    }

    disconnectedCallback() {
        window.removeEventListener('keydown', this.handleKeyPress);
    }
}

Scénario réel: Implémentez des raccourcis clavier pour un outil Salesforce CPQ.

4. Gestion des erreurs avec errorCallback()

Capturez les erreurs inattendues dans les composants enfants et affichez une interface utilisateur de secours.

Exemple:

import { LightningElement } from 'lwc';

export default class ParentComponent extends LightningElement {
    error;
    stack;

    errorCallback(error, stack) {
        this.error = error;
        this.stack = stack;
        console.error('Error:', error, 'Stack:', stack);
    }
}

Scénario réel: assurez-vous qu’un message d’erreur convivial s’affiche si l’intégration d’une passerelle de paiement échoue.

Meilleures pratiques pour les hooks de cycle de vie

  • Évitez les opérations lourdes dans constructor(). Utiliser connectedCallback() pour des tâches telles que la récupération de données.
  • Soyez prudent avec renderedCallback(). Il s’exécute après chaque cycle de rendu, utilisez donc des indicateurs pour éviter les exécutions inutiles.
  • Nettoyez toujours les ressources dans disconnectedCallback(). Cela évite les fuites de mémoire.
  • Utiliser errorCallback() pour une gestion robuste des erreurs. Enregistrez les erreurs à l’aide d’outils de surveillance externes comme Splunk ou Datadog.

Avantages de l’utilisation des hooks de cycle de vie

  • Performances améliorées: Vous garantissez une utilisation efficace des ressources en contrôlant le moment où les tâches sont exécutées.
  • Meilleure organisation du code: Encapsuler la logique spécifique aux différentes phases du cycle de vie.
  • Débogage amélioré: Identifiez facilement les problèmes de phase d’initialisation, de rendu ou de nettoyage.

Conclusion

Les hooks de cycle de vie sont au cœur de tout composant Web Lightning, offrant aux développeurs un contrôle précis sur le comportement d’un composant à différentes étapes. En tirant parti de crochets comme connectedCallback(), renderedCallback()et disconnectedCallback()vous pouvez créer des applications dynamiques, efficaces et maintenables adaptées aux besoins du monde réel. Qu’il s’agisse de récupérer des données, d’intégrer des bibliothèques tierces ou de nettoyer des ressources, ces hooks garantissent que vos composants sont fonctionnels et optimisés.

N’oubliez pas que la clé pour maîtriser les hooks de cycle de vie est de comprendre quand et comment les utiliser efficacement. En suivant les meilleures pratiques, vous pouvez écrire un code plus propre, améliorer les performances et offrir une expérience utilisateur transparente. Ainsi, la prochaine fois que vous commencerez à construire un LWC, réfléchissez à la façon dont ces crochets peuvent faire briller votre composant. Bon codage ! 🚀

Un guide complet du service de navigation dans LWC






Source link