目次
無限スクロール コンポーネントとは
使用例
组件的属性和配置
结尾
ホームページ ウェブフロントエンド Vue.js この vue3 無限スクロール コンポーネントは何百万ものレベルをサポートしています。

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

Apr 01, 2022 am 10:44 AM
vue.js

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

リスト ページに数百万のデータがある場合はどうすればよいですか? 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

vite が .env ファイルを解析する方法についての詳細な説明 vite が .env ファイルを解析する方法についての詳細な説明 Jan 24, 2023 am 05:30 AM

Vue フレームワークを使用してフロントエンド プロジェクトを開発する場合、デプロイ時に複数の環境をデプロイすることになりますが、開発環境、テスト環境、オンライン環境で呼び出されるインターフェイス ドメイン名が異なることがよくあります。どうすれば区別できるでしょうか?それは環境変数とパターンを使用することです。

vue のコンポーネント化とモジュール化の違いは何ですか vue のコンポーネント化とモジュール化の違いは何ですか Dec 15, 2022 pm 12:54 PM

コンポーネント化とモジュール化の違い: モジュール化はコード ロジックの観点から分割され、コードの階層化された開発が容易になり、各機能モジュールの機能の一貫性が保証されます。コンポーネント化は UI インターフェイスの観点から計画され、フロントエンドのコンポーネント化により UI コンポーネントの再利用が容易になります。

Ace コード エディターを Vue プロジェクトに統合する方法の詳細な図による説明 Ace コード エディターを Vue プロジェクトに統合する方法の詳細な図による説明 Apr 24, 2023 am 10:52 AM

Ace は、JavaScript で書かれた埋め込み可能なコード エディターです。 Sublime、Vim、TextMate などのネイティブ エディターの機能とパフォーマンスに匹敵します。あらゆる Web ページや JavaScript アプリケーションに簡単に埋め込むことができます。 Ace は Cloud9 IDE のメイン エディタとして維持されており、Mozilla Skywriter (Bespin) プロジェクトの後継です。

実践的な戦闘: vue ファイルをサポートして定義にジャンプするプラグインを vscode で開発する 実践的な戦闘: vue ファイルをサポートして定義にジャンプするプラグインを vscode で開発する Nov 16, 2022 pm 08:43 PM

vscode 自体は、定義にジャンプするための Vue ファイル コンポーネントをサポートしていますが、そのサポートは非​​常に弱いです。 vue-cli の構成では、多くの柔軟な使用法を記述することができるため、制作効率が向上します。しかし、これらの柔軟な記述方法により、vscode 自体が提供する関数がファイル定義へのジャンプをサポートできなくなります。これらの柔軟な記述方法に対応し、作業効率を向上させるために、Vue ファイルの定義へのジャンプをサポートする vscode プラグインを作成しました。

vue3 の reactive() について詳しく話しましょう vue3 の reactive() について詳しく話しましょう Jan 06, 2023 pm 09:21 PM

前書き: vue3 の開発では、reactive は応答性の高いデータを実装するメソッドを提供します。これは日常の開発で頻繁に使用される API です。この記事では、著者はその内部動作メカニズムを探ります。

Vue3 で単体テストを作成する方法を調べる Vue3 で単体テストを作成する方法を調べる Apr 25, 2023 pm 07:41 PM

Vue.js は、今日のフロントエンド開発において非常に人気のあるフレームワークとなっています。 Vue.js が進化し続けるにつれて、単体テストの重要性がますます高まっています。今日は、Vue.js 3 で単体テストを作成する方法を検討し、いくつかのベスト プラクティスと一般的な問題と解決策を提供します。

JSX 構文と Vue のテンプレート構文の簡単な比較 (利点と欠点の分析) JSX 構文と Vue のテンプレート構文の簡単な比較 (利点と欠点の分析) Mar 23, 2023 pm 07:53 PM

Vue.js では、開発者は、JSX 構文とテンプレート構文という 2 つの異なる構文を使用してユーザー インターフェイスを作成できます。どちらの構文にもそれぞれ長所と短所があるので、それらの違い、長所と短所について説明します。

Vue3 動的コンポーネントで例外を処理する方法の簡単な分析 Vue3 動的コンポーネントで例外を処理する方法の簡単な分析 Dec 02, 2022 pm 09:11 PM

Vue3 動的コンポーネントで例外を処理するにはどうすればよいですか?次の記事では、Vue3 の動的コンポーネントの例外処理方法について説明します。

See all articles