适用于Vue 3的最佳开源分页库

news2024/11/17 5:22:45


从头开始实现分页可能是一项耗时的任务,需要大量的精力和资源。幸运的是,有几个伟大的开源库可以简化这个过程,提高你的效率。使用分页库可以节省你的时间和精力,使你能够专注于建立你的应用程序的其他更重要的功能。

在这篇文章中,我们将探讨一些适用于Vue 3的最佳分页库,回顾它们的特点、受欢迎程度和支持情况。这些库配备了预置的组件、样式和功能,使开发者很容易在他们的项目中快速添加分页功能。让我们开始吧!

Vue Awesome Paginate

Vue Awesome Paginate 库是一个现代而强大的库,拥有各种轻量级、可定制和易于使用的分页组件。Vue Awesome Paginate使用TypeScript和Vite构建,在一个零依赖性的软件包中提供所有的分页功能,使其易于安装和使用。

Vue Awesome Paginate使用纯CSS为每个组件提供完整的定制支持,允许你根据你的网站设计来定制分页组件的外观和感觉。它还提供RTL(从右到左)支持,SEO支持,以及不同的本地化支持:

默认情况下,Vue Awesome Paginate使用以下 props 和事件,然后你可以根据自己的喜好进行定制:

<vue-awesome-paginate
    :total-items="100"
    :items-per-page="5"
    :max-pages-shown="5"
    v-model="currentPage"
    :on-click="onClickHandler"
  />

v-page

v-page 是一个简单而灵活的Vue 3分页库,为用户提供了一系列定制分页组件的功能。使用v-page,你可以只使用你需要的组件,此外还可以使用范围内的插槽,以获得更多可定制的选项。

你可以在页面大小列表中添加一个 All 选项,以显示所有数据而不分页,用 props 设置当前页面、总记录数、分页语言、页面大小菜单、对齐方向等内容。

当分页数据发生变化时,v-page库会触发一个变化事件。总的来说,对于希望在应用程序中实现分页功能的Vue开发者来说,v-page是一个有用的库,有多种定制选项。它的默认格式如下,所以你可以轻松地添加额外的props:

<Page
    :total-row="21"
    @change="changeBasic"
  />

vuejs-paginate-next

vuejs-paginate-next 是一个强大的Vue库,它简化了在Vue 3应用程序中实现分页的过程。为了提供对Vue 3的全面支持,vuejs-paginate-next库是基于现有的vuejs-paginate库建立的,该库只支持Vue 2:

该库提供了一个易于使用的API,使开发者无需编写复杂的代码就能简单地实现分页。它带有来自Bootstrap v5的默认样式,但可以使用CSS轻松定制,使其很容易与现有的应用设计相整合。

vuejs-paginate-next提供了一系列的自定义选项,包括显示的页面数量、每页的项目数量和当前页面。你可以在一个组件中使用它,格式如下:

<paginate
  :page-count="20"
  :click-handler="functionName"
  :prev-text="Prev"
  :next-text="Next"
  :container-class="className"
/>

Vue Use useOffsetPagination function

在写这篇文章的时候,Vue 3还是比较新的,这意味着可用于Vue 3的分页库选择有限。然而,仍有一些快速的替代品可供开发者使用;一种方法是使用提供可组合功能的外部库,如VueUse库。

VueUse提供了一系列有用的可组合函数,包括一个适用于Vue 3应用程序的分页函数。VueUse库是轻量级的,使其成为在Vue 3中实现分页的快速有效的解决方案。

下面的代码片段显示了一个如何使用 useOffsetPagination 函数的例子。首先,我们安装并导入该库到组件中:

npm i @vueuse/core

import { useOffsetPagination } from '@vueuse/core'

根据不同的用例,我们可以定义所需的各种选项、参数和功能:

// 创建一个函数,从数据库中获取当前页面数据。
function fetch(page: number, pageSize: number) {
  return new Promise<User[]>((resolve, reject) => {
    const start = (page - 1) * pageSize
    const end = start + pageSize
    setTimeout(() => {
      resolve(database.value.slice(start, end))
    }, 100)
  })
}

const data: Ref<User[]> = ref([])
const page = ref(1)
const pageSize = ref(10)
fetchData({
  currentPage: page.value,
  currentPageSize: pageSize.value,
})

// 这个函数然后调用fetch函数来获取当前页面的数据
function fetchData({ currentPage, currentPageSize }: { currentPage: number; currentPageSize: number }) {
  fetch(currentPage, currentPageSize).then((responseData) => {
    data.value = responseData
  })
}

接下来,我们可以将这些值传递给组合函数:

//这显示了分页可组合函数的实现,自定义值作为函数中的参数
const {
  currentPage,
  currentPageSize,
  pageCount,
  isFirstPage,
  isLastPage,
  prev,
  next,
} = useOffsetPagination({
  total: database.value.length,
  page: 1,
  pageSize,
  onPageChange: fetchData,
  onPageSizeChange: fetchData,
})

一旦完成,我们可以直接将其整合到模板中:

<div>
  <div>
      total: {{ database.length }}
  </div>
  <div>
    <button :disabled="isFirstPage" @click="prev"> prev </button>
    <button
      v-for="item in pageCount"
      :key="item"
      :disabled="currentPage === item"
      @click="currentPage = item"
    >
      {{ item }}
    </button>
    <button :disabled="isLastPage" @click="next">
      next
    </button>
  </div>

有了这个,我们就很容易实现了数据库列表的分页功能,这使得我们可以逐页查看列表的分段部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/700520.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何选择适合自己的专业?

高考季又到了&#xff0c;毕业生们正忙着选填志愿。志愿填报是一个关键的决策&#xff0c;它将对他们未来的学习和就业产生重要影响。在这个关键的时刻&#xff0c;一些相关问题随之而来&#xff1a;如何填报志愿&#xff1f;是选择专业还是学校&#xff1f;哪些专业就业前景好…

全国农信银CTF逆向Baby8or解析

按CTRL X 跳转到main函数&#xff0c;按F5 生成伪代码进行分析。 发现一个加密函数&#xff0c;当加密后的数据和genc[i]数组中的值对比一致则表示正确flag&#xff0c;字符串长度为35。 双击genc[i] 找到genc[i]中的数据&#xff0c;转成10进制得到数组 genc[172,102,148,22…

数据结构--双链表

数据结构–双链表 单链表 VS 双链表 单链表&#xff1a;无法逆向检索&#xff0c;有时候不太方便 双链表&#xff1a;可进可退&#xff0c;存储密度更低一丢丢 双链表的定义 typedef struct DNode {ElemType data;struct DNode *prior, *next; }DNode, *DLinkList;双链表的初…

JavaWeb——2.注解

这篇文章我们来讲一下Java中的注解 其实这部分内容算是Javaweb的补充内容&#xff0c;其中还包括Junit测试和反射的相关内容。 Junit测试是一个比较简单的内容&#xff0c;这里就不写了&#xff1b;而反射的相关内容可以看java基础专栏&#xff0c;那里面有详细的叙述。 目录…

Jvm jmx_exporter Prometheus dubbo Grafana 重点看端口要对应上 单独进程和程序进程内jmx_exporter

目录 JMX Exporter 的两种用法 启动独立进程 jmx_prometheus_httpserver-0.18.0.jar 方式 下载 jmx_exporter 找地方随便一放 创建配置文件 config_jmx_exporter.yaml 增加 启动 jvm 配置 一定要是jvm参数 可别意外写成程序参数 启动jmx_exporter Prometheus yml 配置 …

使用jmap查看对象数

jmap&#xff1a;JVM自带的一种内存映像工具 查看jmap命令帮助 查询java进程pid # 查看堆内存中的对象 jmap -histo PID# 查看堆内存中的存活对象 jmap -histo:live PID 使用示例&#xff1a; jmap -histo:live 46024|grep com.kingbase8.jdbc.KbConnection 列说明 num#insta…

1.4、Java的标识符 关键字 注释 变量 数据类型与类型转换

1 JAVA语法基础 1.1 标识符 标识符可以简单的理解成一个名字。 在Java中&#xff0c;我们需要给代码中的很多元素起名&#xff0c;包括类名、方法名、字段名、变量名等等。我们给对应元素起的名称就被称为标识符&#xff0c;一个正确的标识符需要遵循以下规则&#xff1a; 1、…

简单实现接口自动化测试(基于python+unittest)

目录 简单实现接口自动化测试(基于pythonunittest) 简介 引言 为什么要做接口自动化测试? 为什么要自己写框架呢? 一个现有的简单接口例子 接口信息如下 测试思路 原始脚本实现 未优化 优化 第一版 优化 第二版 优化 第三版 最终输出日志信息 后续改进建议 总…

ubuntu20.04系统4060安装cuda11.8和cudnn8.6

ubuntu20.04系统4060安装cuda11.8和cudnn8.6 一&#xff1a;安装nvidia-driver-525 1&#xff1a;查看本机显卡能够配置的驱动信息 在终端输入&#xff1a; ubuntu-drivers devices2&#xff1a;推荐安装的版本号是&#xff1a; 安装代码&#xff1a; sudo apt install n…

JPA-querydsl增强工具,query-dsl-plus,现在已开源并推送到mvnrepository

前言 由于喜欢使用JPA&#xff0c;所以后续就接触了query-dsl&#xff0c;但是呢&#xff0c;随着需求的变更&#xff0c;数据查询条件也会越来越复杂&#xff08;这个和jpa没关系&#xff0c;就算使用mybatis也一样&#xff09;&#xff0c;往往前端改动了&#xff0c;后端还…

【亲测】python 安装 pillow报错 如何处理

今天在新系统上安装pillow库&#xff0c;提示错误&#xff1a; WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connection broken by SSLError(SSLEOFError(8, EOF occurred in violation of protocol (_ssl.c:997))): /simple/…

LangChain_ChatGLM部署

环境准备 项目地址&#xff1a;https://github.com/imClumsyPanda/langchain-ChatGLM 下载chatglm-6b模型到本地&#xff0c;大约13G&#xff1a; https://huggingface.co/THUDM/chatglm-6b 里面的文件需要一个个手动点击下载&#xff0c;点击下载时&#xff0c;可能需要多次点…

HBase(8):扫描操作

1 需求 查看ORDER_INFO表中所有的数据 1.2 scan命令 在HBase&#xff0c;我们可以使用scan命令来扫描HBase中的表。语法&#xff1a; scan 表名 1.3 扫描ORDER_INFO表 scan ORDER_INFO,{FORMATTER > toString} 注意&#xff1a;要避免scan一张大表&#xff01; 2 需求二…

[Arduino] ESP32开发 - LCD1602显示实验

目录 LCD1602硬件准备环境搭设接线获取 IIC 地址显示第一行文本可滚动字符串点灯小案例 LCD1602 实验将利用 LCD1602 显示文本 参考文献&#xff1a;https://randomnerdtutorials.com/esp32-esp8266-i2c-lcd-arduino-ide/ 硬件准备 4 条母对母杜邦线 LCD1602 Esp32-Devkit-V1 …

JProfiler 使用中文说明文档

JProfiler 是一款用于 Java 应用程序性能分析和优化的工具。它可以帮助开发人员识别性能瓶颈、内存泄漏等问题&#xff0c;并提供可视化的分析报告和建议。JProfiler 支持各种 Java 虚拟机、应用服务器和操作系统&#xff0c;可以在本地或远程环境中运行。下载安装完成后对应的…

目标检测模型中的Bells and wisthles

目标检测模型中的Bells and wisthles 目标检测模型中的Bells and wisthles1. Data augmentation 数据增强2. Multi-scale Training/Testing 多尺度训练/测试3. Global Context 全局语境4. Box Refinement/Voting 预测框微调/投票法5. OHEM 在线难例挖掘6. Soft NMS 软化非极大抑…

云原生——云平台操作

❄️作者介绍&#xff1a;奇妙的大歪❄️ &#x1f380;个人名言&#xff1a;但行前路&#xff0c;不负韶华&#xff01;&#x1f380; &#x1f43d;个人简介&#xff1a;云计算网络运维专业人员&#x1f43d; 前言 云&#xff1a;云是网络、互联网的一种比喻说法。 平台&am…

【爬虫】5.2 Selenium编写爬虫程序

1. Selenium 框架介绍 Selenium自动化测试框架是实现自动化测试的一个软件结构和功能组件集合。Selenium自动化测试框架是一个半成品&#xff0c;能够帮助用户实现自动化测试。Selenium是模仿浏览器行为的&#xff0c;当你运行测试类&#xff08;爬虫&#xff09;的时候&…

【AIGC】Chatglm2-lora微调

ChatGLM2介绍 ChatGLM2-6B源码地址&#xff1a;https://github.com/THUDM/ChatGLM2-6B ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本&#xff0c;在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上&#xff0c;ChatGLM2-6B 引入了如下新特性&…

【Java】Java中的异常

文章目录 一、什么是异常1.1 异常的概念1.2 异常的分类 二、异常的体系结构三、异常的处理3.1 异常的抛出3.2 异常的捕获与处理3.3 异常的处理流程 四、自定义异常类4.1 自定义异常类的规则4.2 自定义异常案例 一、什么是异常 1.1 异常的概念 在Java中&#xff0c;异常&#…