ホームページ ウェブフロントエンド Vue.js Vue.js を使用して無限スクロール読み込みを実装するための完全ガイド

Vue.js を使用して無限スクロール読み込みを実装するための完全ガイド

Jun 09, 2023 pm 04:11 PM
負荷 vuejs 無限スクロール

データ量が増加し続けるにつれて、Web ページのスクロールによる読み込みが徐々にユーザー エクスペリエンスの重要な部分になってきました。この投稿では、Vue.js を使用して無限スクロール読み込みを実装する方法に関する完全なガイドについて説明します。

無限スクロール読み込みとは何ですか?

無限スクロール読み込み (無限スクロールとも呼ばれる) は、ユーザーがページの一番下までスクロールするときにコンテンツを追加するために使用される Web デザイン手法です。このテクノロジーは、コンテンツを動的に表示する必要があるブログ、ソーシャル メディア、オンライン ストア、その他の Web サイトで一般的に使用されています。

無限スクロールはページングとは異なります。従来のページングでは、ユーザーは次のページのコンテンツを読み込むためにページをめくる必要があります。無限スクロールでは、ページは次のページのコンテンツを自動的にロードし、ユーザーはページをめくることなくリストの閲覧を続けることができます。

Vue.js とは何ですか?

Vue.js は、ユーザー インターフェイスを構築するための軽量の JavaScript フレームワークです。拡張性と保守性に優れており、既存のプロジェクトに簡単に統合できます。 Vue.js は、双方向データ バインディング、コンポーネント化されたアーキテクチャ、仮想 DOM などの多くの便利な機能を提供し、Web アプリケーションの開発をより迅速かつ簡単にします。

ここで、Vue.js を使用して無限スクロール読み込みを実現する方法を検討し始めます。

ステップ 1: プロジェクトを準備する

まず、Node.js と npm を通じて Vue.js プロジェクトをセットアップする必要があります。次に、リスト項目を表示するための Vue.js コンポーネントを作成します。

Vue.js をインストールし、プロジェクトを準備します:

npm install -g vue-cli
vue init webpack my-project
cd my-project
npm install
ログイン後にコピー

コンポーネントの作成:

次のコマンドを使用してコンポーネントを作成できます:

vue generate component List
ログイン後にコピー

ステップ 2 : 無限スクロールの実装

ここが最も重要な部分です。無限スクロールを実現する方法です。

ページネーションを必要とする API があり、1 ページのデータと次のページの URL アドレスを返すとします。

無限スクロールを実現するには、利用可能なデータがなくなるか、ユーザーがページのスクロールを停止するまで、データの次のページを読み込む必要があります。 Vue.js の watch API を使用してスクロール イベントをリッスンし、ページの一番下までスクロールしたときに次のページを読み込むイベントをトリガーできます。

前に作成したコンポーネントに、次のコードを追加します。

<template>
  <div>
    <ul>
      <li v-for="item in items" :key="item.id">{{ item.name }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [],
      nextUrl: "https://api.example.com/page1"
    };
  },
  watch: {
    $route(to, from) {
      window.addEventListener("scroll", this.handleScroll);
    }
  },
  methods: {
    async loadMore() {
      const response = await fetch(this.nextUrl);
      const data = await response.json();
      this.items = [...this.items, ...data.items];
      this.nextUrl = data.nextUrl;
    },
    handleScroll() {
      if (
        window.innerHeight + window.pageYOffset >=
        document.body.offsetHeight
      ) {
        this.loadMore();
      }
    }
  },
  mounted() {
    window.addEventListener("scroll", this.handleScroll);
  },
  destroyed() {
    window.removeEventListener("scroll", this.handleScroll);
  }
};
</script>
ログイン後にコピー

最初に 2 つのデータ項目を定義しました: itemsnextUrlit​​ems はロードされたリスト項目を保存するために使用され、nextUrl は次のページの URL アドレスを保存するために使用されます。

mounted ライフサイクル フックでは、handleScroll メソッドをスクロール イベントにバインドします。

watch API を使用してルート変更イベントをリッスンし、コンポーネントが再利用されるときにスクロール イベントを再バインドします。

loadMore メソッドは、次のページのデータをロードするために使用されます。 fetch API を使用してデータを取得し、それを items 配列に追加します。 handleScrollメソッドはスクロールイベントの確認に使用され、ページが一番下までスクロールすると、loadMoreメソッドが呼び出され、次のページのデータが読み込まれます。

最後に、コンポーネントが破棄されたときのスクロール イベントの監視を解放します。

これで無限スクロールの実装が完了しました。ユーザーがページの一番下までスクロールすると、次のページのデータが自動的にロードされます。

ステップ 3: 読み込みプロンプトとエラー プロンプトを追加する

ユーザー エクスペリエンスを向上するには、通常、リストの最後に読み込みプロンプトを追加する必要があり、エラーが発生した場合にはエラー プロンプトを表示する必要もあります。

前のコンポーネントに次のコードを追加します。

<template>
  <div>
    <ul>
      <li v-for="item in items" :key="item.id">{{ item.name }}</li>
    </ul>
    <div v-if="isLoading">Loading...</div>
    <div v-if="errorMessage">{{ errorMessage }}</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [],
      nextUrl: "https://api.example.com/page1",
      isLoading: false,
      errorMessage: null
    };
  },
  watch: {
    $route(to, from) {
      window.addEventListener("scroll", this.handleScroll);
    }
  },
  methods: {
    async loadMore() {
      try {
        this.isLoading = true;
        const response = await fetch(this.nextUrl);
        const data = await response.json();
        this.items = [...this.items, ...data.items];
        this.nextUrl = data.nextUrl;
      } catch (error) {
        this.errorMessage = "Something went wrong." + error.message;
      } finally {
        this.isLoading = false;
      }
    },
    handleScroll() {
      if (
        window.innerHeight + window.pageYOffset >=
        document.body.offsetHeight
      ) {
        this.loadMore();
      }
    }
  },
  mounted() {
    window.addEventListener("scroll", this.handleScroll);
  },
  destroyed() {
    window.removeEventListener("scroll", this.handleScroll);
  }
};
</script>
ログイン後にコピー

2 つのデータ項目 isLoadingerrorMessage を追加しました。これらは、読み込み状況を表示するために使用されます。ヒントとエラー メッセージ。 loadMore メソッドでは、try-catch ブロックを追加してデータのロード時に発生する可能性のあるエラーをキャッチし、finally ブロックでロード プロンプトを閉じます。 errorMessage にエラー メッセージを表示します。

これで、読み込みプロンプトとエラー プロンプトを含む無限スクロール リストが完成しました。

結論

この記事では、Vue.js を使用して無限スクロール読み込みリストを実装する方法を学びました。スクロール イベントの監視、データの動的ロード、表示ロード、エラー プロンプトなどの重要なテクノロジーについて学びました。

無限スクロールを実装する場合は、一度に大量のデータをロードしすぎないように注意する必要があります。これはパフォーマンスの低下を引き起こします。また、ユーザー エクスペリエンスを向上させるために、適切な読み込みプロンプトとエラー プロンプトをユーザーに提供する必要があります。

もちろん、これは単なる単純な例です。 Vue.js はより多くの機能と API を提供し、より複雑なコンポーネントやアプリケーションを作成できるようになります。この記事があなたのお役に立てば幸いです。

以上がVue.js を使用して無限スクロール読み込みを実装するための完全ガイドの詳細内容です。詳細については、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)

Vue.js と Kotlin 言語を使用して Android アプリケーションを開発するためのヒント Vue.js と Kotlin 言語を使用して Android アプリケーションを開発するためのヒント Jul 31, 2023 pm 02:17 PM

Vue.js と Kotlin 言語を使用して Android アプリケーションを開発するためのヒント モバイル アプリケーションの人気とユーザー ニーズの継続的な成長により、Android アプリケーションの開発は開発者からますます注目を集めています。 Android アプリを開発する場合、適切なテクノロジー スタックを選択することが重要です。近年、Vue.js 言語と Kotlin 言語が Android アプリケーション開発の選択肢として徐々に人気になってきています。この記事では、Vue.js と Kotlin 言語を使用して Android アプリケーションを開発するためのテクニックをいくつか紹介し、対応するコード例を示します。 1. 最初に開発環境をセットアップする

Illustrator でのプラグインの読み込みエラー [修正] Illustrator でのプラグインの読み込みエラー [修正] Feb 19, 2024 pm 12:00 PM

Adobe Illustrator を起動すると、プラグインの読み込みエラーに関するメッセージが表示されますか?一部の Illustrator ユーザーは、アプリケーションを開いたときにこのエラーに遭遇しました。メッセージの後には、問題のあるプラグインのリストが続きます。このエラー メッセージは、インストールされているプラ​​グインに問題があることを示していますが、Visual C++ DLL ファイルの破損や環境設定ファイルの破損など、他の理由によって発生する可能性もあります。このエラーが発生した場合は、この記事で問題を解決する方法を説明しますので、以下を読み続けてください。 Illustrator でのプラグインの読み込みエラー Adob​​e Illustrator を起動しようとしたときに「プラグインの読み込みエラー」エラー メッセージが表示された場合は、次の操作を行うことができます。 管理者として

Stremio の字幕が機能しない; 字幕の読み込みエラー Stremio の字幕が機能しない; 字幕の読み込みエラー Feb 24, 2024 am 09:50 AM

Windows PC の Stremio で字幕が機能しませんか?一部の Stremio ユーザーは、ビデオに字幕が表示されないと報告しました。多くのユーザーが、「字幕の読み込みエラー」というエラー メッセージが表示されたと報告しています。このエラーとともに表示される完全なエラー メッセージは次のとおりです: 字幕の読み込み中にエラーが発生しました 字幕の読み込みに失敗しました: これは、使用しているプラ​​グインまたはネットワークに問題がある可能性があります。エラー メッセージにあるように、インターネット接続がエラーの原因である可能性があります。したがって、ネットワーク接続を確認し、インターネットが適切に機能していることを確認してください。これとは別に、このエラーの背後には、競合する字幕アドオン、特定のビデオ コンテンツでサポートされていない字幕、古い Stremio アプリなど、他の理由が考えられます。のように

ハイパーリンクを挿入すると Outlook がフリーズする ハイパーリンクを挿入すると Outlook がフリーズする Feb 19, 2024 pm 03:00 PM

Outlook にハイパーリンクを挿入するときにフリーズの問題が発生した場合は、不安定なネットワーク接続、古い Outlook バージョン、ウイルス対策ソフトウェアによる干渉、またはアドインの競合が原因である可能性があります。これらの要因により、Outlook がハイパーリンク操作を適切に処理できない可能性があります。ハイパーリンクの挿入時に Outlook がフリーズする問題を修正する 次の修正プログラムを使用して、ハイパーリンクの挿入時に Outlook がフリーズする問題を修正します。 インストールされているアドインを確認する Outlook を更新する ウイルス対策ソフトウェアを一時的に無効にして、新しいユーザー プロファイルの作成を試行する Office アプリ プログラムを修正する Office をアンインストールして再インストールする 始めましょう。 1] インストールされているアドインを確認する Outlook にインストールされているアドインが問題の原因となっている可能性があります。

Vue.js と Python を使用してデータ視覚化アプリケーションを開発するためのヒント Vue.js と Python を使用してデータ視覚化アプリケーションを開発するためのヒント Jul 31, 2023 pm 07:53 PM

Vue.js と Python を使用してデータ視覚化アプリケーションを開発するためのヒント はじめに: ビッグ データ時代の到来により、データ視覚化は重要なソリューションになりました。データ視覚化アプリケーションの開発では、Vue.js と Python を組み合わせることで、柔軟性と強力な機能を提供できます。この記事では、Vue.js と Python を使用してデータ視覚化アプリケーションを開発するためのヒントをいくつか紹介し、対応するコード例を添付します。 1. Vue.js の概要 Vue.js は軽量の JavaScript です。

CSSが読み込めない問題の解決方法 CSSが読み込めない問題の解決方法 Oct 20, 2023 am 11:29 AM

CSS を読み込めない問題の解決策には、ファイル パスの確認、ファイルの内容の確認、ブラウザのキャッシュのクリア、サーバー設定の確認、開発者ツールの使用、ネットワーク接続の確認などが含まれます。詳細な紹介: 1. ファイル パスを確認します。まず、CSS ファイルのパスが正しいことを確認してください。CSS ファイルが Web サイトの別の部分またはサブディレクトリにある場合は、正しいパスを指定する必要があります。 CSS ファイルはルート ディレクトリにあり、パスは直接である必要があります。 ; 2. ファイルの内容を確認します。パスが正しい場合は、CSS ファイル自体に問題がある可能性があります。CSS ファイルを開いて確認してください。

HTML、CSS、jQueryを使用して無限スクロールのニュースリストを作成する方法 HTML、CSS、jQueryを使用して無限スクロールのニュースリストを作成する方法 Oct 24, 2023 am 11:00 AM

HTML、CSS、jQuery を使用して無限スクロール ニュース リストを作成する方法 Web 開発では、無限スクロールは一般的なインタラクション テクノロジであり、大量のデータを読み込む必要があるニュース リストなどのページに特に適しています。この記事では、HTML、CSS、jQuery を使用して無限スクロールのニュース リストを実装する方法と、具体的なコード例を紹介します。まず、ニュース リストを表示するための基本的な HTML 構造が必要です。簡単な例を次に示します: &lt;!DOCTYPE

Vue.js と Lua 言語の統合、ゲーム開発用のフロントエンド エンジン構築におけるベスト プラクティスと経験の共有 Vue.js と Lua 言語の統合、ゲーム開発用のフロントエンド エンジン構築におけるベスト プラクティスと経験の共有 Aug 01, 2023 pm 08:14 PM

Vue.js と Lua 言語の統合、ゲーム開発用のフロントエンド エンジンを構築するためのベスト プラクティスと経験の共有 はじめに: ゲーム開発の継続的な開発に伴い、ゲーム フロントエンド エンジンの選択は重要な決定となっています。これらの選択肢の中で、Vue.js フレームワークと Lua 言語が多くの開発者の注目を集めています。人気のフロントエンド フレームワークとして、Vue.js は豊富なエコシステムと便利な開発方法を備えていますが、Lua 言語は軽量で効率的なパフォーマンスのため、ゲーム開発で広く使用されています。この記事では、その方法について説明します。

See all articles