Maison > interface Web > Voir.js > Comment implémenter le défilement infini pour optimiser les performances des applications via la liste virtuelle de Vue

Comment implémenter le défilement infini pour optimiser les performances des applications via la liste virtuelle de Vue

WBOY
Libérer: 2023-07-17 08:55:39
original
913 Les gens l'ont consulté

Comment optimiser les performances des applications grâce au défilement infini de la liste virtuelle de Vue

Alors que la complexité des applications frontales continue d'augmenter, en particulier lors du traitement de grandes quantités de données, certains problèmes de performances surviennent également. À cet égard, Vue fournit un outil puissant - la liste virtuelle, qui peut considérablement améliorer les performances des applications lors du traitement de grandes quantités de données en rendant dynamiquement les éléments visibles dans la liste.

Cet article expliquera comment utiliser la liste virtuelle de Vue pour implémenter le défilement infini et optimiser les performances des applications. Nous utiliserons une application de carnet d'adresses virtuel comme exemple pour montrer comment charger une grande quantité de données et rendre dynamiquement les contacts visibles lors du défilement.

Tout d'abord, nous devons créer un nouveau projet Vue à l'aide de Vue CLI et ajouter le plugin vue-virtual-scroll-list.

vue create virtual-list-demo
cd virtual-list-demo
yarn add vue-virtual-scroll-list
Copier après la connexion

Ensuite, dans le fichier App.vue, nous pouvons commencer à créer l'application de carnet d'adresses virtuel.

<template>
  <div class="app">
    <div class="header">虚拟通讯录</div>
    <div class="contact-list" ref="listRef">
      <ul>
        <li v-for="contact in visibleData" :key="contact.id" class="contact-item">{{ contact.name }}</li>
      </ul>
    </div>
  </div>
</template>

<script>
import VirtualList from 'vue-virtual-scroll-list';

export default {
  name: 'App',
  components: {
    VirtualList,
  },
  data() {
    return {
      contactList: [], // 存放所有联系人数据
      visibleData: [], // 存放可见的联系人数据
      startIndex: 0, // 起始索引
      endIndex: 0, // 结束索引
      listHeight: 500, // 虚拟列表的高度
      itemHeight: 50, // 每一项的高度
    };
  },
  created() {
    // 模拟加载联系人数据
    const contacts = [];
    for (let i = 0; i < 100000; i++) {
      contacts.push({
        id: i,
        name: `联系人${i}`,
      });
    }
    this.contactList = contacts;
    this.updateVisibleData();
  },
  methods: {
    // 根据滚动位置计算可见数据并更新
    updateVisibleData() {
      const start = Math.max(0, Math.floor(this.startIndex / this.itemHeight));
      const end = Math.min(
        this.contactList.length - 1,
        Math.floor((this.startIndex + this.listHeight) / this.itemHeight)
      );
      this.visibleData = this.contactList.slice(start, end + 1);
    },
    // 监听滚动事件
    handleScroll(event) {
      const scrollTop = event.target.scrollTop;
      this.startIndex = Math.max(0, Math.floor(scrollTop));
      this.endIndex = Math.min(
        this.contactList.length - 1,
        Math.floor(scrollTop + this.listHeight)
      );
      this.updateVisibleData();
    },
  },
};
</script>

<style scoped>
.app {
  font-family: Arial, sans-serif;
}

.header {
  background-color: #f5f5f5;
  padding: 10px;
  text-align: center;
  font-size: 18px;
}

.contact-list {
  height: 500px;
  overflow-y: auto;
}

.contact-item {
  height: 50px;
  line-height: 50px;
  padding-left: 20px;
  border-bottom: 1px solid #f5f5f5;
}

</style>
Copier après la connexion

Dans le code ci-dessus, nous utilisons le composant vue-virtual-scroll-list pour envelopper la liste de contacts afin d'obtenir l'effet de défilement virtuel. Dans le hook de cycle de vie créé, nous avons généré 100 000 données de contact simulées et initialisé les paramètres pertinents de la liste virtuelle, tels que la hauteur de la liste, la hauteur de chaque élément, etc. Dans la méthode handleScroll, nous calculons la position de défilement et mettons à jour les données de contact visibles. Ensuite, restituez les contacts visibles via la directive v-for dans le modèle.

De cette façon, même s'il y a une grande quantité de données à restituer, seule la partie visible sera restituée, ce qui réduit considérablement le nombre de nœuds DOM et améliore ainsi les performances de l'application.

Enfin, nous exécutons l'application et testons les performances en faisant défiler. Vous constaterez que l'application reste fluide même lorsqu'il y a beaucoup de données à charger.

Pour résumer, grâce au plugin de liste virtuelle de Vue, nous pouvons réaliser un défilement infini et optimiser les performances des applications. Qu'il s'agisse de listes de grandes quantités de données ou d'autres scénarios nécessitant un rendu dynamique, les listes virtuelles sont un outil très utile.

Ce qui précède est une introduction à la façon d'optimiser les performances des applications grâce au défilement infini de la liste virtuelle de Vue. J'espère que cet article pourra vous être utile !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal