Skip to content

Pagination 组件文档

概述

Pagination(分页)组件是一个用于分页显示数据的 UI 组件,允许用户浏览和控制数据的不同页数。它通常用于数据量较大的场景,如数据表格、列表显示等,帮助用户通过分页导航查看不同的内容。该组件支持多种功能,如上一页、下一页按钮、跳转至某一页、选择每页显示条目数等。

预览

每页显示
跳至
基本使用
<template>
  <se-pagination
      :total="100"
      :currentPage="currentPage"
      :pageSize="pageSize"
      @update:currentPage="updatePage"
      @update:pageSize="updatePageSize"
  />
</template>

<script setup>
import { ref } from 'vue';

const currentPage = ref(1);
const pageSize = ref(10);

const updatePage = (page) => {
  currentPage.value = page;
};

const updatePageSize = (size) => {
  pageSize.value = size;
};
</script>

功能特点

  • 上一页/下一页:用户可以通过点击“上一页”或“下一页”按钮来翻页。
  • 快速跳转:通过输入框快速跳转到某一页。
  • 选择每页显示条目数:用户可以选择每页显示的数据条目数(例如:10、20、50 等)。
  • 页码显示:支持显示页码,并在需要时添加省略号(...)表示中间的页码区间。
  • 禁用状态:分页按钮(上一页、下一页)在翻页时可以被禁用。

Pagination 参数

参数名类型默认值描述示例和跳转 Demo
totalnumber必填数据的总条目数,用于计算分页的总页数。示例
currentPagenumber1当前页码,表示当前展示的是哪一页。示例
pageSizenumber10每页显示的条目数,表示每页展示多少条数据。示例
pageSizeOptionsnumber[][10, 20, 50, 100]每页显示条目数的选项数组,用户可以选择每页显示的条目数。示例
showQuickJumperbooleanfalse是否显示快速跳转输入框,允许用户直接输入页码进行跳转。示例
showTotalbooleanfalse是否显示总条目数的统计信息,例如:共 100 条示例
simplebooleanfalse是否使用简洁模式,简洁模式只显示上一页、下一页和页码,省略其他功能。示例

Pagination 事件

事件名参数描述
update:currentPagenumber当当前页改变时触发,返回新的页码值。
update:pageSizenumber当每页条目数改变时触发,返回新的每页条目数。

其他说明

  • 上一页/下一页:分页组件提供“上一页”和“下一页”按钮,用户可以通过点击这些按钮来切换当前页码。
  • 省略号显示:当分页的页码过多时,分页按钮中会自动显示省略号(...),只显示当前页及其前后页,提升用户体验。
  • 快速跳转:用户可以通过输入框快速跳转到指定页码。该功能支持页码范围的限制,确保用户只能跳转到有效页码。
  • 每页显示条目数:用户可以通过下拉框选择每页显示的条目数。当用户改变每页显示的条目数时,分页组件会自动更新并触发事件。
  • 简洁模式:简洁模式只显示必要的分页元素,如页码、上一页、下一页,隐藏其他功能,使界面更加简洁。

使用示例

vue
<template>
  <se-pagination
    :total="100"
    :currentPage="currentPage"
    :pageSize="pageSize"
    :pageSizeOptions="[10, 20, 50]"
    showQuickJumper
    showTotal
    @update:currentPage="handlePageChange"
    @update:pageSize="handlePageSizeChange"
  />
</template>

<script setup>
import { ref } from "vue";
import SePagination from "@/components/SePagination.vue";

const currentPage = ref(1);
const pageSize = ref(10);

// 处理当前页变化
const handlePageChange = (newPage) => {
  currentPage.value = newPage;
};

// 处理每页条目数变化
const handlePageSizeChange = (newSize) => {
  pageSize.value = newSize;
};
</script>

样式说明

  • 分页按钮:分页按钮(上一页、下一页、页码)使用 flex 布局排列,确保分页元素在不同屏幕尺寸下能正确显示。
  • 省略号:当页码数过多时,会显示省略号(...)来替代中间的页码。
  • 快速跳转输入框:输入框用于输入跳转页码,支持数字输入和校验。输入框的设计与分页按钮并列,确保分页布局整洁美观。

视觉效果

  • 在常规分页模式下,分页按钮与页码之间有适当的间距,确保布局清晰。
  • 在简洁模式下,仅显示必要的分页元素(上一页、下一页和页码),并使用更紧凑的布局,使其适用于对界面简洁度有更高要求的场景。

Released under the MIT License.