Quel est le but de la fonction 'trackBy' dans la directive 'ngFor' ?

Amélioration des performances avec la fonction 'trackBy' dans 'ngFor'

La fonction 'trackBy' dans la directive 'ngFor' de Angular est utilisée pour améliorer les performances en suivant l'identité des objets. C'est la réponse correcte pour le quiz ci-dessus.

Quand la directive 'ngFor' est utilisée pour afficher des éléments à partir d'un tableau, Angular crée, met à jour et détruit les éléments du DOM en fonction des modifications du tableau. Par défaut, Angular utilise l'identité d'objet pour déterminer quel élément du tableau correspond à quel élément du DOM. C'est-à-dire, si l'objet référencé est le même.

Cependant, cette approche peut mener à des problèmes de performance notamment quand le tableau est fréquemment modifié. Créer, mettre à jour et détruire les éléments du DOM sont des opérations coûteuses en termes de performances.

La fonction 'trackBy' permet de spécifier une fonction qui définit l'identité de chaque élément. Angular utilisera alors cette fonction pour suivre l'identité des éléments et minimisera le nombre de modifications nécessaires dans le DOM.

Par exemple, si vous travaillez avec un tableau d'objets où chaque objet a un ID unique, vous pouvez utiliser 'trackBy' pour dire à Angular d'utiliser cet ID pour suivre les objets.

<li *ngFor="let item of items; trackBy: trackByIdentity">
  {{item.name}}
</li>
trackByIdentity(index, item) {
  return item.id;
}

En suivant les objets de cette façon, Angular saura quels éléments correspondent aux éléments existants, même si l'objet réel a changé. Cela améliore considérablement les performances, car Angular n'aura pas besoin de créer ou de détruire les éléments du DOM inutiles.

Il est important de noter que l'utilisation de 'trackBy' est juste une optimisation. Si vos listes ne changent pas fréquemment ou si elles ne contiennent pas beaucoup d'objets, vous ne remarquerez peut-être pas une grande différence de performances. Or, dans les applications où les listes sont fréquemment mises à jour ou contiennent de nombreux objets, l'utilisation de 'trackBy' peut avoir un impact significatif sur les performances.

Related Questions

Trouvez-vous cela utile?