Rumah > hujung hadapan web > View.js > Komponen skrol tak terhingga vue3 ini menyokong berjuta-juta tahap!

Komponen skrol tak terhingga vue3 ini menyokong berjuta-juta tahap!

藏色散人
Lepaskan: 2022-04-01 10:58:49
ke hadapan
3877 orang telah melayarinya

Apakah komponen tatal tak terhingga

Apakah yang perlu kami lakukan apabila halaman senarai kami mempunyai berjuta-juta keping data? kain? Penomboran mungkin bukan cara terbaik untuk mengalaminya. Penatalan tanpa had ialah cara teknikal yang lebih baik untuk menyelesaikan senario ini. Apabila pengguna menatal ke bawah kandungan, komponen senarai halaman seterusnya ditambahkan secara automatik untuk memuatkan lebih banyak kandungan. Pengguna tidak perlu menunggu halaman dimuatkan terlebih dahulu, dan untuk pemaparan bahagian hadapan, sejumlah besar komponen tidak dipaparkan berulang kali, yang meningkatkan prestasi pemaparan halaman. Jadi, penatalan tanpa had boleh memberikan pengalaman yang lebih baik untuk pengguna.

Komponen skrol tak terhingga vue3 ini menyokong berjuta-juta tahap!

Tatal tak terhingga ialah mod yang sangat biasa dalam aplikasi seperti tapak web e-dagang dan hujung belakang CMS. Peruncit dalam talian menggemari model pemuatan produk ini kerana ia membolehkan pengguna menyemak imbas setiap produk yang tersedia dalam kategori dengan lancar tanpa perlu sentiasa menjeda dan menunggu halaman seterusnya dimuatkan. [Disyorkan: tutorial video vue]

Mengenai vue3-infinite-list

Tapak web rasmi: https://github.com/tnfe/vue3-infinite-list

vue3-infinite-list ialah komponen tatal tak terhingga yang pendek dan padat untuk vue3 Saiznya sangat kecil, tidak bergantung pada gzip dan hanya 3kb. Walaupun terdapat banyak komponen sumber terbuka tatal tak terhingga yang berkaitan dengan vue, berbanding dengan produk yang serupa vue3-infinite-list masih mempunyai banyak ciri tersendiri, dan ia ditulis sepenuhnya menggunakan vue3 setup api typescript LOGO projek adalah ulat berkaki seribu?

Komponen skrol tak terhingga vue3 ini menyokong berjuta-juta tahap!

Ciri

  • Saiz kecil & kebergantungan sifar – hanya 3kb selepas gzip
  • Menyokong pemaparan senarai peringkat juta, dengan mudah
  • Menyokong menatal ke item yang ditentukan dan Menentukan pengimbang tatal awal
  • Sokongan tetap dan pembolehubah senarai lebar/tinggi
  • menyokong menegak atau mendatar Senarai reka letak berbeza
  • Untuk Vue3 Penulisan skrip taip
  • Mudah digunakanBoleh digunakan dalam kombinasi dengan pelbagai perpustakaan UI

Komponen skrol tak terhingga vue3 ini menyokong berjuta-juta tahap!

Cara menggunakan

Komponen skrol tak terhingga vue3 ini menyokong berjuta-juta tahap!

Gunakan npm:

npm install vue3-infinite-list --save
Salin selepas log masuk

Gunakan benang:

yarn add vue3-infinite-list
Salin selepas log masuk

Petikan

import InfiniteList from 'vue3-infinite-list';
Salin selepas log masuk
  <InfiniteList 
   :data="data" 
   :width="&#39;100%&#39;" 
   :height="500" 
   :itemSize="50" 
   :debug="debug" 
   v-slot="{ item, index }"
   >
    <div class="li-con">{{ index + 1 }} : {{ item }}</div>
  </InfiniteList>
Salin selepas log masuk

Contoh penggunaan

1. Penggunaan asas: item jenis ketinggian tetap, tatal menegak ( Lalai) demo

Komponen skrol tak terhingga vue3 ini menyokong berjuta-juta tahap!

sangat mudah untuk digunakan dan boleh digabungkan dengan elemen-plus atau antd-vue, tdesign dan perpustakaan UI lain secara dalaman.

<InfiniteList 
  :data="data" 
  :width="&#39;100%&#39;" 
  :height="500" 
  :itemSize="50" 
  :debug="debug" 
  v-slot="{ item, index }"
>
  <div class="li-con">{{ index + 1 }} : {{ item }}</div>
</InfiniteList>
Salin selepas log masuk

2. Tetapkan arah tatal kepada demo mendatar

  <InfiniteList
 :data="data"
 :width="900"
 :height="220"
 :itemSize="115"
 scrollDirection="horizontal"
 :debug="debug"
 v-slot="{ item, index }"
  >
 <div class="li-con li-con-r">
   item{{ index }} <br />
   xxxxxxx <br />
   xxxxxxx <br />
   <el-button type="primary" round>Primary</el-button>
 </div>
  </InfiniteList>
Salin selepas log masuk

Di siniscrollDirection="horizontal" anda boleh menetapkan arah tatal kepada mendatar.

3 Kawal ketinggian skrol (nilai ketinggian setiap item berubah) secara dinamik

Komponen skrol tak terhingga vue3 ini menyokong berjuta-juta tahap!

  <InfiniteList
    :data="data"
    :width="&#39;100%&#39;"
    :height="520"
    :itemSize="getItemSize"
    :debug="debug"
    v-slot="{ item, index }"
  >
    <div class="li-con">item {{ index }} : {{ item }}</div>
  </InfiniteList>
Salin selepas log masuk
// 通过这个函数可以动态设置元素宽高.
const getItemSize = (i: number): number => {
      switch (i % 4) {
        case 1:
          return 80;
        case 2:
          return 50;
        case 3:
          return 100;
        default:
          return 200;
      }
  };
Salin selepas log masuk

Di sini getItemSize ialah fungsi dengan sintaks berikut: (i: number): number, melalui fungsi ini anda boleh menetapkan lebar dan ketinggian elemen secara dinamik.

4. Tatal ke demo kedudukan elemen yang ditentukan

  <InfiniteList
 :data="data"
 :width="&#39;100%&#39;"
 :height="500"
 :itemSize="getItemSize"
 :scrollToIndex="scrollToIndex"
 :debug="debug"
 v-slot="{ item, index }"
  >
 <div class="li-con" :class="getClass(index)">item{{ index + 1 }} : {{ item }}</div>
  </InfiniteList>
Salin selepas log masuk

Anda juga boleh menggunakan scrollToIndex untuk menatal ke elemen yang ditentukan.

5 Tatal ke elemen yang ditentukan (penjajaran halus) tunjuk cara

 <InfiniteList
   :data="data"
   :width="&#39;100%&#39;"
   :height="500"
   :itemSize="getItemSize"
   :scrollToIndex="scrollToIndex"
   :scrollToAlignment="scrollToAlignment"
   :debug="debug"
   v-slot="{ item, index }"
 >
   <div 
     class="li-con" 
     :class="getClass(index)"
    >
      item{{ index + 1 }} : {{ item }}
   </div>
 </InfiniteList>
Salin selepas log masuk

Anda boleh menggunakan atribut scrollToIndex dan scrollToAlignment untuk menentukan elemen tatal Bagaimana untuk menyelaraskan dengan kawasan skrol, terdapat empat pilihan: auto, start, center, end, yang masing-masing sepadan dengan penjajaran automatik, kedudukan di permulaan bekas, kedudukan di tengah-tengah bekas, dan kedudukan di hujung bekas.

6 Tatal ke kedudukan yang ditentukan, unit ialah demo piksel

  <InfiniteList
    :data="data"
    :width="&#39;100%&#39;"
    :height="500"
    :itemSize="90"
    :scrollOffset="scrollOffset"
    :debug="debug"
    v-slot="{ item, index }"
  >
    <el-row class="mb-4 li-con">
      <el-col :span="8">index: {{ index + 1 }} </el-col>
      <el-col :span="8">xxxxxxxxxx</el-col>
      <el-col :span="8">
        <el-button type="primary">Primary</el-button> 
        <el-button type="success">Success</el-button></el-col
      >
    </el-row>
  </InfiniteList>
Salin selepas log masuk

Anda juga boleh menggunakan scrollOffset untuk menatal ke kedudukan yang ditentukan.

7.支持动态变更数据 demo

  <InfiniteList 
 :data="data" 
 :width="&#39;100%&#39;" 
 :height="500" 
 :itemSize="60" 
 :debug="debug" 
 v-slot="{ item, index }"
  >
 <el-row class="li-con">
   <el-col :span="6">item{{ index + 1 }}</el-col>
   <el-col :span="6">2022-05-01</el-col>
   <el-col :span="6">Name: Tom</el-col>
   <el-col :span="6">
     <el-button type="primary">Button</el-button>
     <el-button type="success">Button</el-button>
   </el-col>
 </el-row>
  </InfiniteList>
Salin selepas log masuk

只需要动态的改变绑定的 data.

8.设置额外渲染元素的数量 demo

<InfiniteList 
  :overscanCount="2" 
  :data="data" 
  :width="&#39;100%&#39;" 
  :height="500" 
  :itemSize="50" 
  :debug="debug" 
  v-slot="{ item, index }"
>
  <div class="li-con">{{ index + 1 }} : {{ item }}</div>
</InfiniteList>
Salin selepas log masuk
在可见的item上/下再各多渲染额外的overscanCount个item。调整它可以帮助减少某些浏览器/设备上的滚动闪烁。

Komponen skrol tak terhingga vue3 ini menyokong berjuta-juta tahap!

组件的属性和配置

属性 类型 是否必须? 描述
width Number or String* 列表宽度. 在滚动方向是 'horizontal'是用于确定滚动元素个数.
height Number or String* 列表宽度. 在滚动方向是 'vertical'是用于确定滚动元素个数.
data any[] 构建滚动元素的数据
itemSize (index: number): number
可以是一个固定的宽/高(取决于滚动方向), 一个包含列表所有元素的数组, 或者是返回指定位置元素高度的函数: (index: number): number
scrollDirection String
指定滚动方向 'vertical' (默认) 或 'horizontal'.
scrollOffset Number
可以指定滚动位置
scrollToIndex Number
可以指定到滚动到哪个元素
scrollToAlignment String
结合 scrollToIndex一起用, 用于控制滚动到的元素的对齐方式. 可选: 'start''center''end' or 'auto'. 使用 'start' 将对齐到容器的起始位置, 'end' 则对齐到元素的结尾. 使用 'center可以对齐到容器正中间. 'auto' 则是滚动到scrollToIndex指定元素恰好完全可见的位置
overscanCount Number
在可见元素上/下额外渲染的元素数量. 这可以减少在特定浏览器/设备上的闪烁
width 在 scrollDirection 是 'vertical'时只能是string类型。类似的, Height 在 scrollDirection 是 'horizontal'时也只能是string类型*

结尾

一款零依赖,适用于vue的短小精悍的无限滚动加载库的使用方法就介绍完了,是不超级容易上手,赶紧使用起来吧,使用过程中有任何问题,请在此 report it 提报。


Atas ialah kandungan terperinci Komponen skrol tak terhingga vue3 ini menyokong berjuta-juta tahap!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:segmentfault.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan