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 のインストールとアクティベーションのグラフィック チュートリアル

推薦する

MySQL 8.0.23のルートパスワードをリセットするための最適なソリューション

この方法は2021年2月7日に編集されました。私が使用しているバージョンは8.0.23です。事件の原...

Weibo の一括フォロー解除機能を実装する JavaScript コード

Weibo ユーザーのフォローを一括で解除するクールな JavaScript コードWeibo には...

Vue2.x および Vue3.x のカスタム命令の使用方法とフック関数の原理を理解する

目次Vue2.x の使用法グローバル登録部分登録使用フック機能フック関数のパラメータVue3.x の...

Linux カーネルの探究: Kconfig の秘密

Linux 構成/ビルド システムがどのように機能するかを深く理解します。 Linux カーネル構成...

HTMLのimgタグで画像の中心部分だけを表示する方法(3つの方法)

HTML の img タグで画像の中心を表示する方法は、現在 3 つあります。ここで記録しておきま...

Vue は検証コードのカウントダウンボタンを実装します

この記事では、検証コードカウントダウンボタンを実装するためのVueの具体的なコードを例として紹介しま...

MySQL をクリーンにアンインストールする方法 (テスト済みで効果的)

Mysql を完全にアンインストールするにはどうすればいいですか?以下の手順に従って実行してくださ...

Dockerでイメージを削除する方法

dockerでイメージを削除するコマンドはdocker rmiですが、このコマンドを実行してもイメー...

Dockerがログファイルを保存する場所の詳細な説明

目次ログはどこに保存されますか?コンテナ内のアプリケーションからのログを表示するDockerデーモン...

JavaScriptの詳細な分析と方向の変更方法

目次これ方法オブジェクト内これを隠した厳密モードこれを変更してこれいつものように、まずはコードを見て...

Vue+tsx のスロット使用の問題が置き換えられない

目次序文問題を見つける解決する追記序文最近、 UIコンポーネントを作成する予定で、 vue 2.xと...

MySQL 8.0.15 winx64 圧縮パッケージのインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15 winx64 圧縮パッケージのインストールと設定方法を参考ま...

LinuxにNginxを素早くインストールする方法

目次nginxとは1. 必要な依存関係をダウンロードする2. nginxの圧縮パッケージをダウンロー...

Linux での chmod コマンドの使用方法の詳細な説明

chmod コマンド構文chmod コマンドを使用する場合の正しい構文は次のとおりです。 chmod...

MySQLにログインする際のエラー「ERROR 1045 (28000)」を解決する方法

今日はサーバーにログインして、データベース内のいくつかのものを変更する準備をしました。しかし、パスワ...