Vueはプルダウンとスクロールでデータを読み込む例を実装しています

Vueはプルダウンとスクロールでデータを読み込む例を実装しています

Webプロジェクトでは、データを読み込むためにプルダウンやスクロールの機能を使用することがよくあります。今日は、Vue-infinite-loadingプラグインの紹介と使い方を説明します!

ステップ1: インストール

npm インストール vue-infinite-loading --save

ステップ2: 引用

'vue-infinite-loading' から InfiniteLoading をインポートします。

エクスポートデフォルト{
  コンポーネント: { InfiniteLoading }
}

ステップ3: 使用

1. 基本的な使い方

<テンプレート>
  <div> <p v-for="item in list"> <span v-text="item"></span> </p> <!-- 無限読み込みコンポーネントは、スクロール ボックス内のリストの下部に配置する必要があります。 --> <infinite-loading @infinite="infiniteHandler"></infinite-loading> </div></template><script> 'vue-infinite-loading' から InfiniteLoading をインポートします。

  エクスポートデフォルト{
    データ() {
      戻る {
        リスト: []
      };
    },
    メソッド: {
      無限ハンドラ($state) {
        // ここでは1秒の読み込み遅延をシミュレートします setTimeout(() => {
          temp = [] とします。
          (i = this.list.length + 1、i <= this.list.length + 20、i++ とします) {
            temp.push(i);
          }
          this.list = this.list.concat(temp);
          $state.loaded();
        }, 1000);
      },
    },
    コンポーネント: { InfiniteLoading }
  </スクリプト>

2. ページングの使用

<テンプレート>
    <div>
          <ul>
              <li class="hacker-news-item" v-for="(item, key) in list"></li>
        </ul>
        <無限ロード @infinite="infiniteHandler">
            データはもうありません
        </無限読み込み>
    </div>
</テンプレート>    

<スクリプト>
    'vue-infinite-loading' から InfiniteLoading をインポートします。
    'axios' から axios をインポートします。

    エクスポートデフォルト{
          データ() {
            戻る {
                  リスト: []
            };
          },
          メソッド: {
            無限ハンドラ($state) {
                api="http://xxx.com/xxx" とします。
                //api はデータアドレスを要求します axios.get(api, {
                    パラメータ: {
                        // ページ番号パラメータ(ページあたり 10 個)
                          ページ: this.list.length / 10 + 1、
                    },
                  }).then((応答) => {
                    if (応答データの長さ) {
                        // response.data はリクエスト インターフェイスによって返される配列リストです。this.list = this.list.concat(response.data);
                          $state.loaded();
                          (this.list.length / 10 === 10)の場合{
                              // ここでは 10 ページのデータが読み込まれ、これ以上読み込まれないように設定されています $state.complete(); 
                          }
                    } それ以外 {
                          $state.complete();
                    }
                  });
            }
          },
          コンポーネント: { InfiniteLoading }
    };
</スクリプト>

説明: $state: このコンポーネントは、特別なイベント パラメータ $state をイベント ハンドラに渡して、読み込み状態を変更します。$state パラメータには、loaded メソッド、complete メソッド、reset メソッドの 3 つのメソッドが含まれます。

  • loaded メソッドは、各データのロード後にアニメーションを停止するために使用され、その後、コンポーネントは次のトリガーの準備が整います。
  • complete メソッドは無限読み込みを完了するために使用され、コンポーネントはスクロール操作を処理しなくなります。ロード時にメソッドが呼び出されない場合、このコンポーネントはユーザーに結果メッセージを表示します。そうでない場合は、それ以上のユーザーメッセージは表示されず、他のコンテンツはスロットによって設定できます。
  • リセットメソッドはコンポーネントを元の状態に戻します

3. 条件付き使用

<テンプレート>
    <div class="ハッカーニュースリスト">
          <div class="ハッカーニュースヘッダー">
            <!-- プルダウンして変更 -->
            <v-model="タグ" @change="changeFilter()">を選択します。
                  <option value="story">ストーリー</option>
                  <option value="history">履歴</option>
            </選択>
              <!--またはクリックして変更-->
            <button @click="changeFilter()">検索</button>
          </div>
          <ul>
              <li class="hacker-news-item" v-for="(item, key) in list"></li>
           </ul>
           <!--ref="infiniteLoading" を設定することを忘れないでください -->
          <infinite-loading @infinite="infiniteHandler" ref="infiniteLoading">
            これ以上のデータはありません
          </無限読み込み>
    </div>
</テンプレート>

<スクリプト>
    'vue-infinite-loading' から InfiniteLoading をインポートします。
    'axios' から axios をインポートします。

    エクスポートデフォルト{
          データ() {
            戻る {
                  リスト: [],
                  タグ: 'ストーリー',
            };
          },
          メソッド: {
            無限ハンドラ($state) {
                  定数api="http://xxx.com/xxx";
                  //api はデータアドレスを要求します axios.get(api, {   
                    パラメータ: {
                        // 変更された条件パラメータタグ: this.tag,  
                          ページ: this.list.length / 10 + 1、
                    },
                  }).then(({ データ }) => {
                    if (データ結果の長さ) {
                          this.list = this.list.concat(data.result);
                          $state.loaded();
                          (this.list.length / 20 === 10)の場合{
                            状態.complete();
                          }
                    } それ以外 {
                          $state.complete();
                    }
                  });
            },
            //このメソッドを使用して条件バーを変更します changeFilter() {
                  このリスト = [];
                  this.$nextTick(() => {
                    this.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');
                  });
            },
          },
          コンポーネント: { InfiniteLoading }
    }
</スクリプト>

公式リンク: https://peachscript.github.io/vue-infinite-loading/

GitHub リンク: https://github.com/PeachScript/vue-infinite-loading

上記は、Vue のドロップダウンスクロールでデータを読み込む例の詳細です。Vue のドロップダウンスクロールでデータを読み込む詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Vueはスクロールバーを記憶し、ドロップダウンの読み込みを実装するのに最適な方法です
  • Vue は歌手リストのアルファベット順ソート、ドロップダウンスクロールバー、サイドバーソートのリアルタイム更新を実装します
  • Vueはdivの垂直スクロールバーを一番下まで引っ張る方法を監視します
  • Vue は mint-ui を使用してプルダウン更新と無限スクロールのサンプルコードを実装します
  • Vue は Ajax スクロールとプルダウン読み込みを実装し、読み込み効果も備えています (推奨)
  • Vueに基づくプルダウン更新指示とスクロール更新指示
  • Vue モバイルでは、プルダウンして更新し、スライドアップして読み込みます。
  • Vue はネットワーク画像のウォーターフォール フローを実装します + プルダウンして更新 + プルアップしてさらに読み込む (詳細な手順)
  • Vueのプルダウン読み込みは実際にはそれほど複雑ではありません
  • VueScrollはモバイルデバイス上でプルダウン更新とプルアップ読み込みを実装します
  • Vue プラグイン mescroll.js は、モバイル デバイスでのプルアップ読み込みとプルダウン更新を実装します。
  • Vue モバイル端末で次のページのデータを読み込むためにプルダウンするコンポーネントをカプセル化する方法

<<:  MySQL での or ステートメントの使用例

>>:  VMware Workstation 14 Pro のインストールとアクティベーションのグラフィック チュートリアル

推薦する

ES6分解課題の原理と応用

目次配列分割代入オブジェクトの分解代入分割割り当ての適用変数の値の交換関数から複数の値を返すマップ構...

Linux の crw、brw、lrw などのファイル属性は何ですか?

ファイルとは何ですか?すべてのファイルは実際には文字列のストリームですが、適切な解析方法を使用すると...

Dockerコンテナの原理の分析

目次01 コンテナの本質とは何か? 02 Cgroupテクノロジーと名前空間テクノロジーの概要03 ...

Dockerコマンドは一般ユーザーが実行できるように実装されている

dockerをインストールすると、通常はdockerユーザーグループが作成されます。ステップ2: 現...

HTML でよく使用されるエスケープ文字の概要

HTML でよく使用されるエスケープ文字をまとめると次のようになります。 &nbsp; 改行...

MySQL クエリのソートとクエリ集計関数の使用法の分析

この記事では、例を使用して、MySQL クエリのソート関数とクエリ集計関数の使用方法を説明します。ご...

HTMLファイルとは何ですか?HTMLファイルを開く方法

HTML は Hypertext Markup Language の略です。現在、ほとんどの Web...

Ubuntu にグラフィック ドライバーが正常にインストールされたかどうかを確認する方法

次のコマンドを実行します: glxinfo | grep レンダリング結果が「はい」の場合、グラフィ...

Dockerがプライベート倉庫Harborを構築する手順

港Harborは、エンタープライズレベルのプライベートDockerイメージリポジトリを構築するための...

ドロップダウンリスト選択ボックスを実装するJavaScript

この記事の例では、ドロップダウンリスト選択ボックスを実装するためのJavaScriptの具体的なコー...

Linux 編集の開始、停止、再起動の Springboot jar パッケージ スクリプトの例

序文springboot設定ファイルでは、設定ファイルの名前には独自の意味と用途があります。 dev...

HTML でのテキストエリアの使用と一般的な問題およびケース分析

textarea タグはよく使われる HTML タグです。主に長いテキストを入力するときに改行するた...

MySQLの重複排除操作を極限まで最適化する方法

目次1. インデックスと変数の賢い使用1. インデックスなしの比較テスト2. created_tim...

一般的なDockerコマンドの詳細な説明

1. ヘルプコマンド1. 現在のDockerバージョンを表示する docker バージョン2. イメ...

印刷広告を成功させるための「3I」基準

国内の多くの広告主にとって、印刷広告の制作と評価は、しばしばかなり主観的です。自分の感情や美的感覚に...