Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Gestion et Suppression des Écouteurs d'Événements | Gestion des Événements et Interactions Utilisateur en JavaScript
Maîtrise Avancée de JavaScript

bookGestion et Suppression des Écouteurs d'Événements

Les écouteurs d'événements sont essentiels pour rendre les applications web interactives, mais une gestion inadéquate de ces écouteurs peut entraîner des problèmes de performance et des fuites de mémoire, en particulier dans les applications dynamiques ou de longue durée. Comprendre comment ajouter et supprimer correctement les écouteurs d'événements, ainsi que savoir quand les nettoyer, garantit des performances optimales et prévient les fuites de ressources.

Bonnes pratiques pour l'ajout et la suppression des écouteurs d'événements

Lors de la gestion des écouteurs d'événements, il est essentiel de s'assurer qu'ils sont ajoutés et supprimés efficacement. Voici quelques bonnes pratiques :

Toujours utiliser des fonctions nommées lorsque cela est possible

Lors de l'attachement d'un écouteur d'événement, il est préférable d'utiliser des fonctions nommées plutôt que des fonctions anonymes. Cela facilite la suppression ultérieure de l'écouteur et améliore la lisibilité du code.

Voici un exemple d'ajout et de suppression d'un écouteur d'événement :

index.html

index.html

index.css

index.css

index.js

index.js

copy

Une fonction nommée, handleClick, met à jour le texte de sortie pour afficher « Bouton cliqué ! » à chaque pression sur le bouton. De plus, un compteur suit le nombre de clics. Une fois que le bouton a été cliqué trois fois, removeEventListener() est utilisé pour détacher l'écouteur d'événement, arrêtant ainsi les mises à jour ultérieures et affichant un message indiquant que l'écouteur a été supprimé.

Prévention des fuites de mémoire par le nettoyage des écouteurs d'événements

Les écouteurs d'événements laissés attachés aux éléments (en particulier lorsque ces éléments sont retirés du DOM) peuvent provoquer des fuites de mémoire. Le nettoyage des écouteurs d'événements inutilisés ou superflus est essentiel dans les applications dynamiques, en particulier dans les applications monopage (SPA), où les composants ou éléments DOM sont fréquemment créés et détruits.

Scénario de fuite de mémoire

Supposons qu'un écouteur d'événement soit attaché à un bouton qui est ensuite retiré du DOM, mais que l'écouteur d'événement reste actif en mémoire. Cela peut entraîner une dégradation des performances au fil du temps.

Solution : supprimer les écouteurs d'événements lors du retrait des éléments

Si un élément est supprimé du DOM, ses écouteurs d'événements doivent également être supprimés. Voici un exemple de suppression dynamique d'un élément et de nettoyage de ses écouteurs d'événements.

index.html

index.html

index.css

index.css

index.js

index.js

copy
  • removeEventListener() : Avant de supprimer le bouton du DOM, son écouteur d'événement est détaché afin d'éviter les fuites de mémoire ;
  • Gestion de la mémoire : Si l'écouteur d'événement n'est pas supprimé, il reste en mémoire, même si l'élément n'est plus dans le DOM.

Exemple pratique : Gestionnaire de liste de tâches dynamique avec fonctionnalités d'ajout, de suppression et de modification

Cette application de liste de tâches permet aux utilisateurs de :

  • Ajouter des tâches dynamiquement ;
  • Modifier des tâches en ligne par double-clic ;
  • Supprimer des tâches individuelles ;
  • Effacer toutes les tâches, en veillant à ce que tous les écouteurs d'événements soient correctement supprimés.
index.html

index.html

index.css

index.css

index.js

index.js

copy

Fonctionnalités de gestion des tâches :

  • Ajout de tâches : Les nouvelles tâches sont ajoutées dynamiquement lorsque l'utilisateur saisit une tâche dans le champ de saisie et clique sur « Ajouter une tâche ». Chaque tâche possède un bouton « Supprimer » ;
  • Suppression de tâches : Chaque tâche dispose de son propre bouton « Supprimer » qui, lorsqu'il est cliqué, retire la tâche du DOM. Ceci est réalisé via la délégation d'événements, il n'est donc pas nécessaire d'ajouter des écouteurs individuels à chaque tâche ;
  • Modification de tâches : Un double-clic sur une tâche la rend modifiable, et l'appui sur « Entrée » enregistre les modifications en désactivant l'état modifiable.

Délégation d'événements :

L'ensemble du ul (liste des tâches) gère tous les clics en utilisant la délégation d'événements, ainsi, quel que soit le nombre de tâches ajoutées, un seul écouteur d'événement est nécessaire pour toutes les tâches. Cela rend l'application efficace, en particulier lorsque le nombre de tâches augmente.

Gestion de la mémoire :

Lorsque le bouton « Supprimer toutes les tâches » est cliqué, la liste entière des tâches est effacée et l'écouteur d'événement est également supprimé à l'aide de removeEventListener(). Cela permet d'éviter les fuites de mémoire, ce qui est important dans un contexte réel, notamment lors de la gestion de grandes listes dynamiques.

1. Pourquoi est-il important de supprimer les écouteurs d'événements lorsque des éléments sont retirés du DOM ?

2. Quelle méthode est utilisée pour supprimer un écouteur d'événement d'un élément ?

question mark

Pourquoi est-il important de supprimer les écouteurs d'événements lorsque des éléments sont retirés du DOM ?

Select the correct answer

question mark

Quelle méthode est utilisée pour supprimer un écouteur d'événement d'un élément ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 7

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Awesome!

Completion rate improved to 2.22

bookGestion et Suppression des Écouteurs d'Événements

Glissez pour afficher le menu

Les écouteurs d'événements sont essentiels pour rendre les applications web interactives, mais une gestion inadéquate de ces écouteurs peut entraîner des problèmes de performance et des fuites de mémoire, en particulier dans les applications dynamiques ou de longue durée. Comprendre comment ajouter et supprimer correctement les écouteurs d'événements, ainsi que savoir quand les nettoyer, garantit des performances optimales et prévient les fuites de ressources.

Bonnes pratiques pour l'ajout et la suppression des écouteurs d'événements

Lors de la gestion des écouteurs d'événements, il est essentiel de s'assurer qu'ils sont ajoutés et supprimés efficacement. Voici quelques bonnes pratiques :

Toujours utiliser des fonctions nommées lorsque cela est possible

Lors de l'attachement d'un écouteur d'événement, il est préférable d'utiliser des fonctions nommées plutôt que des fonctions anonymes. Cela facilite la suppression ultérieure de l'écouteur et améliore la lisibilité du code.

Voici un exemple d'ajout et de suppression d'un écouteur d'événement :

index.html

index.html

index.css

index.css

index.js

index.js

copy

Une fonction nommée, handleClick, met à jour le texte de sortie pour afficher « Bouton cliqué ! » à chaque pression sur le bouton. De plus, un compteur suit le nombre de clics. Une fois que le bouton a été cliqué trois fois, removeEventListener() est utilisé pour détacher l'écouteur d'événement, arrêtant ainsi les mises à jour ultérieures et affichant un message indiquant que l'écouteur a été supprimé.

Prévention des fuites de mémoire par le nettoyage des écouteurs d'événements

Les écouteurs d'événements laissés attachés aux éléments (en particulier lorsque ces éléments sont retirés du DOM) peuvent provoquer des fuites de mémoire. Le nettoyage des écouteurs d'événements inutilisés ou superflus est essentiel dans les applications dynamiques, en particulier dans les applications monopage (SPA), où les composants ou éléments DOM sont fréquemment créés et détruits.

Scénario de fuite de mémoire

Supposons qu'un écouteur d'événement soit attaché à un bouton qui est ensuite retiré du DOM, mais que l'écouteur d'événement reste actif en mémoire. Cela peut entraîner une dégradation des performances au fil du temps.

Solution : supprimer les écouteurs d'événements lors du retrait des éléments

Si un élément est supprimé du DOM, ses écouteurs d'événements doivent également être supprimés. Voici un exemple de suppression dynamique d'un élément et de nettoyage de ses écouteurs d'événements.

index.html

index.html

index.css

index.css

index.js

index.js

copy
  • removeEventListener() : Avant de supprimer le bouton du DOM, son écouteur d'événement est détaché afin d'éviter les fuites de mémoire ;
  • Gestion de la mémoire : Si l'écouteur d'événement n'est pas supprimé, il reste en mémoire, même si l'élément n'est plus dans le DOM.

Exemple pratique : Gestionnaire de liste de tâches dynamique avec fonctionnalités d'ajout, de suppression et de modification

Cette application de liste de tâches permet aux utilisateurs de :

  • Ajouter des tâches dynamiquement ;
  • Modifier des tâches en ligne par double-clic ;
  • Supprimer des tâches individuelles ;
  • Effacer toutes les tâches, en veillant à ce que tous les écouteurs d'événements soient correctement supprimés.
index.html

index.html

index.css

index.css

index.js

index.js

copy

Fonctionnalités de gestion des tâches :

  • Ajout de tâches : Les nouvelles tâches sont ajoutées dynamiquement lorsque l'utilisateur saisit une tâche dans le champ de saisie et clique sur « Ajouter une tâche ». Chaque tâche possède un bouton « Supprimer » ;
  • Suppression de tâches : Chaque tâche dispose de son propre bouton « Supprimer » qui, lorsqu'il est cliqué, retire la tâche du DOM. Ceci est réalisé via la délégation d'événements, il n'est donc pas nécessaire d'ajouter des écouteurs individuels à chaque tâche ;
  • Modification de tâches : Un double-clic sur une tâche la rend modifiable, et l'appui sur « Entrée » enregistre les modifications en désactivant l'état modifiable.

Délégation d'événements :

L'ensemble du ul (liste des tâches) gère tous les clics en utilisant la délégation d'événements, ainsi, quel que soit le nombre de tâches ajoutées, un seul écouteur d'événement est nécessaire pour toutes les tâches. Cela rend l'application efficace, en particulier lorsque le nombre de tâches augmente.

Gestion de la mémoire :

Lorsque le bouton « Supprimer toutes les tâches » est cliqué, la liste entière des tâches est effacée et l'écouteur d'événement est également supprimé à l'aide de removeEventListener(). Cela permet d'éviter les fuites de mémoire, ce qui est important dans un contexte réel, notamment lors de la gestion de grandes listes dynamiques.

1. Pourquoi est-il important de supprimer les écouteurs d'événements lorsque des éléments sont retirés du DOM ?

2. Quelle méthode est utilisée pour supprimer un écouteur d'événement d'un élément ?

question mark

Pourquoi est-il important de supprimer les écouteurs d'événements lorsque des éléments sont retirés du DOM ?

Select the correct answer

question mark

Quelle méthode est utilisée pour supprimer un écouteur d'événement d'un élément ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 7
some-alt