検索
ホームページウェブフロントエンドVue.jsVue コンポーネントで無限スクロール読み込みとページング表示を実装する方法

Vue コンポーネントで無限スクロール読み込みとページング表示を実装する方法

Vue コンポーネントで無限スクロールの読み込みとページング表示を実装する方法

フロントエンド開発では、大量のデータを表示する必要がある状況によく遭遇します。 。ユーザー エクスペリエンスを向上させるために、通常はデータをページに表示し、ページの一番下までスクロールすると次のページのデータが自動的に読み込まれます。この記事では、Vue コンポーネントを使用して無限スクロール読み込みとページング表示機能を実装する方法と、具体的なコード例を紹介します。

まず、ページング データを取得するためのバックエンド インターフェイスを準備する必要があります。指定したページ番号 (page) のデータリストを取得できるインターフェース /api/data があるとします。インターフェイスによって返されるデータ形式は次のとおりです。

{
  "total": 100, // 总数据条数
  "list": [...] // 当前页的数据列表
}

次に、Vue のコンポーネント開発アイデアを使用して、スクロール読み込みとページング表示の機能を独立したコンポーネントにカプセル化できます。これを InfiniteScroll コンポーネントと呼ぶことができます。まず、親コンポーネントにコンポーネントを導入し、必要なパラメータを渡す必要があります。

<template>
  <div>
    <infinite-scroll
      :api-url="'/api/data'" // 后端接口地址
      :page-size="10" // 每页数据条数
      @load-next-page="loadNextPage"
    >
      <!-- 数据展示的代码 -->
    </infinite-scroll>
  </div>
</template>

InfiniteScroll コンポーネントでは、スクロール イベントをリッスンし、ページの一番下までスクロールするときにデータの次のページをロードする操作をトリガーする必要があります。 window オブジェクトの scroll イベントを使用して、スクロール イベントをリッスンできます。

export default {
  data() {
    return {
      page: 1, // 当前页码
      total: 0, // 总数据条数
      list: [] // 当前页的数据列表
    };
  },
  mounted() {
    window.addEventListener('scroll', this.handleScroll);
  },
  destroyed() {
    window.removeEventListener('scroll', this.handleScroll);
  },
  methods: {
    handleScroll() {
      const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
      const windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
      const documentHeight = document.documentElement.scrollHeight || document.body.scrollHeight;

      if (scrollTop + windowHeight >= documentHeight) {
        this.loadNextPage();
      }
    },
    async loadNextPage() {
      if (this.page >= Math.ceil(this.total / this.pageSize)) {
        return; // 已加载所有数据
      }

      const response = await fetch(`${this.apiUrl}?page=${this.page + 1}`);
      const result = await response.json();

      this.total = result.total;
      this.list = [...this.list, ...result.list];
      this.page++;
    }
  }
};

上記のコードでは、window.addEventListener メソッドを使用してスクロール イベント リスナーを追加し、ページの一番下までスクロールするときに次のページのデータの読み込みをトリガーします。同時に、コンポーネントが破棄されるときに、 window.removeEventListener メソッドを使用してスクロール イベント リスナーを削除する必要があります。

handleScroll メソッドでは、まず、ページのスクロール距離 (scrollTop)、ウィンドウの高さ (windowHeight)、ドキュメントの合計の高さ (ドキュメントの高さ)。そして、スクロール位置にウィンドウの高さを加えた値が文書の全高以上になった場合、ページが一番下までスクロールされたと判断し、次のページのデータをロードする操作を実行します。トリガーされます。

loadNextPage メソッドでは、最初にすべてのデータがロードされたかどうか、つまり現在のページ番号がデータ ページの総数より大きいかどうかを判断します。すべてのデータがロードされている場合は、直接戻ります。それ以外の場合は、非同期リクエストを通じてデータの次のページを取得し、返されたデータを元のデータ リストにマージし、現在のページ番号とデータ項目の総数を同時に更新します。

最後に、InfiniteScroll コンポーネント内で、取得したデータに基づいてそれを表示できます。

<template>
  <div>
    <ul>
      <li v-for="item in list" :key="item.id">{{ item.name }}</li>
    </ul>
    <div v-if="page >= Math.ceil(total / pageSize)">已加载所有数据</div>
  </div>
</template>

上記のコードでは、v-for 命令を通じてデータ リストを走査し、各要素の id 属性を key# として使用します。 # #、リスト要素の一意性を確保します。同時にコンポーネントの下部にプロンプ​​トを追加し、ページ番号がデータの総ページ数以上の場合、「すべてのデータがロードされました」というプロンプト メッセージが表示されます。

まとめると、

InfiniteScroll コンポーネントを導入し、対応するパラメータを与えることで、無限スクロール読み込みとページング表示の機能を実現できます。スクロール イベントをリッスンすることにより、ページの一番下までスクロールすると、データの次のページが自動的に読み込まれ、無限スクロール ロードの効果が得られます。同時にコンポーネントのデータを更新することで、各ページのデータ数と総データ数に基づいてページ表示が行われます。

この記事で提供されているコード例が役に立ち、Vue コンポーネントで無限スクロール読み込み機能やページング表示機能を実装できるようになれば幸いです。ご質問や改善のための提案がある場合は、ディスカッションのためにメッセージを残してください。

以上がVue コンポーネントで無限スクロール読み込みとページング表示を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
在Illustrator中加载插件时出错[修复]在Illustrator中加载插件时出错[修复]Feb 19, 2024 pm 12:00 PM

启动AdobeIllustrator时是否会弹出加载插件时出错的消息?一些Illustrator用户在打开该应用程序时遇到了此错误。消息后面紧跟着一系列有问题的插件。该错误提示表明已安装的插件存在问题,但也可能是由于VisualC++DLL文件损坏或首选项文件受损等其他原因引起。如果遇到此错误,我们将在本文中指导您修复问题,请继续阅读以下内容。在Illustrator中加载插件时出错如果您在尝试启动AdobeIllustrator时收到“加载插件时出错”的错误消息,您可以使用以下用途:以管理员身

Stremio字幕不工作;加载字幕时出错Stremio字幕不工作;加载字幕时出错Feb 24, 2024 am 09:50 AM

字幕在你的WindowsPC上不能在Stremio上运行吗?一些Stremio用户报告说,视频中没有显示字幕。许多用户报告说遇到了一条错误消息,上面写着“加载字幕时出错”。以下是与此错误一起显示的完整错误消息:加载字幕时出错加载字幕失败:这可能是您正在使用的插件或您的网络有问题。正如错误消息所说,可能是您的互联网连接导致了错误。因此,请检查您的网络连接,并确保您的互联网工作正常。除此之外,这个错误的背后可能还有其他原因,包括字幕加载项冲突、特定视频内容不支持字幕以及Stremio应用程序过时。如

PHP实现无限滚动加载PHP实现无限滚动加载Jun 22, 2023 am 08:30 AM

随着互联网的发展,越来越多的网页需要支持滚动加载,而无限滚动加载是其中的一种。它可以让页面不断加载新的内容,使用户可以更流畅地浏览网页。在这篇文章中,我们将介绍如何使用PHP实现无限滚动加载。一、什么是无限滚动加载?无限滚动加载是一种基于滚动条的网页内容加载方式。它的原理是当用户滚动至页面底部时,通过AJAX异步调取后台数据,实现不断加载新的内容。这种加载方

css加载不出来怎么解决css加载不出来怎么解决Oct 20, 2023 am 11:29 AM

css加载不出来的解决办法有检查文件路径、检查文件内容、清除浏览器缓存、检查服务器设置、使用开发者工具和检查网络连接等。详细介绍:1、检查文件路径,首先请确保CSS文件的路径正确,如果CSS文件位于网站的不同部分或子目录中,需要提供正确的路径,如果CSS文件位于根目录下,路径应该是直接的;2、检查文件内容,如果路径正确,那么问题可能出在CSS文件本身,打开CSS文件检查等等。

插入超链接时Outlook冻结插入超链接时Outlook冻结Feb 19, 2024 pm 03:00 PM

如果您在向Outlook插入超链接时遇到冻结问题,可能是由于网络连接不稳定、Outlook版本旧、防病毒软件干扰或加载项冲突等原因。这些因素可能导致Outlook无法正常处理超链接操作。修复插入超链接时Outlook冻结的问题使用以下修复程序解决插入超链接时Outlook冻结的问题:检查已安装的加载项更新Outlook暂时禁用您的防病毒软件,然后尝试创建新的用户配置文件修复办公室应用程序卸载并重新安装Office我们开始吧。1]检查已安装的加载项可能是Outlook中安装的某个加载项导致了问题。

如何使用Vue构建无限滚动和瀑布流布局?如何使用Vue构建无限滚动和瀑布流布局?Jun 27, 2023 pm 01:32 PM

Vue.js是一种流行的JavaScript框架,它使开发者可以轻松地创建动态,响应式的Web应用程序。其中,尤其以其强大的组件化开发能力而备受开发者的青睐。而无限滚动和瀑布流布局已经成为现代Web开发中不可或缺的特性之一。本文旨在介绍如何使用Vue.js,结合一些第三方库,实现无限滚动和瀑布流布局的功能。实现无限滚动无限滚动(Infinit

如何通过Vue的虚拟列表实现无限滚动优化应用性能如何通过Vue的虚拟列表实现无限滚动优化应用性能Jul 17, 2023 am 08:55 AM

如何通过Vue的虚拟列表实现无限滚动优化应用性能随着前端应用的复杂性不断增加,特别是在处理大量数据时,一些性能问题也随之而来。在这方面,Vue提供了一个强大的工具——虚拟列表(VirtualList),通过动态渲染列表中可见的元素,可以在处理大量数据时大大提升应用性能。本文将介绍如何使用Vue的虚拟列表实现无限滚动,并优化应用的性能。我们将以一个虚拟通讯录

安装win7加载usb驱动失败怎么办安装win7加载usb驱动失败怎么办Jul 11, 2023 am 08:13 AM

在安装win7系统中,有网友遇到了加载usb驱动失败的情况,usb设备无法在新的win7系统中被识别,常见的u盘,鼠标等设备就无法使用了。那么安装win7加载usb驱动失败怎么办?下面小白就教下大家安装win7加载usb驱动失败的解决方法。方法一:1、首先我们打开电脑进入电脑系统,在电脑系统查看电脑的系统版本。确认电脑系统的版本与设备驱动的版本是否一致。2、确认驱动的版本后,将USB设备连接到电脑系统。电脑系统显示,设备无法连接到系统。3、在连接信息页面,点击帮助按钮查看帮助信息。4、如果电脑系

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター