ホームページ > ウェブフロントエンド > Vue.js > この vue3 無限スクロール コンポーネントは何百万ものレベルをサポートしています。

この vue3 無限スクロール コンポーネントは何百万ものレベルをサポートしています。

藏色散人
リリース: 2022-04-01 10:58:49
転載
3875 人が閲覧しました

無限スクロール コンポーネントとは

リスト ページに数百万のデータがある場合はどうすればよいですか? Woolen布?ページネーションはそれを体験する最良の方法ではないかもしれませんが、このシナリオを解決するには、無限スクロールの方が優れた技術的手段です。ユーザーがコンテンツを下にスクロールすると、次のページのリスト コンポーネントが自動的に追加され、さらにコンテンツが読み込まれます。ユーザーはページがプリロードされるまで待つ必要がなく、フロントエンド レンダリングの場合、多数のコンポーネントが繰り返しレンダリングされないため、ページ レンダリングのパフォーマンスが向上します。したがって、無限スクロールはユーザーに優れたエクスペリエンスを提供できます。

この vue3 無限スクロール コンポーネントは何百万ものレベルをサポートしています。

#無限スクロールは、電子商取引 Web サイトや CMS バックエンドなどのアプリケーションで非常に一般的なモードです。オンライン小売業者は、この商品ロード モデルを気に入っています。これにより、ユーザーは常に一時停止して次のページが読み込まれるまで待つ必要がなく、カテゴリ内で入手可能なすべての商品をシームレスに閲覧できるからです。 [推奨:

vue ビデオ チュートリアル ]

vue3-infinite-list について

公式 Web サイト: https://github.com/tnfe/vue3-infinite-list

vue3-infinite-list は、vue3 用の短く簡潔な無限スクロール コンポーネントです。サイズは非常に小さく、gzip への依存性はなく、わずか 3 kb です。 vue に関連する無限スクロールのオープン ソース コンポーネントは数多くありますが、同様の製品と比較すると、vue3-infinite-list には依然として多くの独自の機能があり、完全に vue3 setup api typescript# を使用して記述されています。 ##. プロジェクトのロゴは千本足の芋虫?。

この vue3 無限スクロール コンポーネントは何百万ものレベルをサポートしています。特徴

    小型サイズで依存関係なし
  • - gzip 圧縮後わずか 3kb
  • 100 万レベルのリスト レンダリングをサポート
  • 、簡単に
  • 指定項目へのスクロールをサポート
  • および 初期スクロール オフセットを指定
  • fixed
  • および variable 幅/高さのさまざまなリストをサポート
  • 垂直
  • または 水平 ## をサポート # さまざまなレイアウトのリストVue3 向け
  • Typescript の記述
  • 使いやすい
  • さまざまな UI ライブラリと組み合わせて使用​​できます

この vue3 無限スクロール コンポーネントは何百万ものレベルをサポートしています。使用方法

##npm:この vue3 無限スクロール コンポーネントは何百万ものレベルをサポートしています。

npm install vue3-infinite-list --save
ログイン後にコピー
を使用#yarn:#を使用##
yarn add vue3-infinite-list
ログイン後にコピー
Quote

import InfiniteList from 'vue3-infinite-list';
ログイン後にコピー
  <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>
ログイン後にコピー

使用例

1.基本的な使い方:アイテム高さ固定タイプ、縦スクロール(デフォルト)デモ

使い方は非常に簡単で、element-plus または antd-vue、tdesign、その他の UI ライブラリと内部的に組み合わせることができます。

<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>
ログイン後にコピー
この vue3 無限スクロール コンポーネントは何百万ものレベルをサポートしています。2. スクロール方向を水平方向に設定するデモ

  <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>
ログイン後にコピー

Here

scrollDirection="horizo​​ntal"

スクロール方向を水平方向に設定できます。水平方向。

3. スクロールの高さを動的に制御します (各項目の高さの値が変化します) デモ

  <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>
ログイン後にコピー
// 通过这个函数可以动态设置元素宽高.
const getItemSize = (i: number): number => {
      switch (i % 4) {
        case 1:
          return 80;
        case 2:
          return 50;
        case 3:
          return 100;
        default:
          return 200;
      }
  };
ログイン後にコピー

ここで、

getItemSize は、次の構文を持つ関数です: この vue3 無限スクロール コンポーネントは何百万ものレベルをサポートしています。(i:number):number。この関数を通じて、要素の幅と高さを動的に設定できます。

4. 指定した要素の位置までスクロールしますdemo<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> &lt;InfiniteList :data=&quot;data&quot; :width=&quot;&amp;#39;100%&amp;#39;&quot; :height=&quot;500&quot; :itemSize=&quot;getItemSize&quot; :scrollToIndex=&quot;scrollToIndex&quot; :debug=&quot;debug&quot; v-slot=&quot;{ item, index }&quot; &gt; &lt;div class=&quot;li-con&quot; :class=&quot;getClass(index)&quot;&gt;item{{ index + 1 }} : {{ item }}&lt;/div&gt; &lt;/InfiniteList&gt;</pre><div class="contentsignin">ログイン後にコピー</div></div>

scrollToIndex

を使用して、指定した要素までスクロールすることもできます。

5. 指定した要素までスクロールします (微調整) デモ

<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> &lt;InfiniteList :data=&quot;data&quot; :width=&quot;&amp;#39;100%&amp;#39;&quot; :height=&quot;500&quot; :itemSize=&quot;getItemSize&quot; :scrollToIndex=&quot;scrollToIndex&quot; :scrollToAlignment=&quot;scrollToAlignment&quot; :debug=&quot;debug&quot; v-slot=&quot;{ item, index }&quot; &gt; &lt;div class=&quot;li-con&quot; :class=&quot;getClass(index)&quot; &gt; item{{ index + 1 }} : {{ item }} &lt;/div&gt; &lt;/InfiniteList&gt;</pre><div class="contentsignin">ログイン後にコピー</div></div>

scrollToIndex

scrollToAlignment## を使用できます # 属性スクロール要素をスクロール領域にどのように配置するかを指定します。それぞれ auto

startcenterend の 4 つのオプションを使用します。自動配置に対応し、コンテナの先頭に配置され、コンテナの中央に配置され、コンテナの最後に配置されます。 6. 指定した位置までスクロールします。単位はピクセルです。demo

  <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>
ログイン後にコピー
scrollOffset

を使用して、指定した位置までスクロールすることもできます。

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>
ログイン後にコピー

只需要动态的改变绑定的 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>
ログイン後にコピー
在可见的item上/下再各多渲染额外的overscanCount个item。调整它可以帮助减少某些浏览器/设备上的滚动闪烁。

この vue3 無限スクロール コンポーネントは何百万ものレベルをサポートしています。

组件的属性和配置

属性 类型 是否必须? 描述
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 提报。


以上がこの vue3 無限スクロール コンポーネントは何百万ものレベルをサポートしています。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート