Pagination 分页

在已知总量的数据集合中切换当前页。

Beta

示例

直接操作示例,查看组件在具体任务中的状态与反馈。

分页只改变当前示例的本地切片;URL、筛选重置和远程取数仍由宿主负责。
本地记录分页
  • 本地记录 1
  • 本地记录 2
  • 本地记录 3
  • 本地记录 4
  • 本地记录 5
当前第 1 页,显示 本地记录 1本地记录 5
紧凑模式只保留上一页、当前页信息和下一页操作。
移动端结果
当前第 3 页。
边界页和相邻页数量控制长列表中的页码密度。
长列表分页
将总量与当前范围放在分页控件附近,帮助用户理解位置。
搜索结果分页
总计126 条
当前显示21–40

使用建议

先明确 total 与 pageSize

分页需要稳定的总量和页大小;数据变化后由宿主校正当前页,避免展示不存在的页码或空切片。

让宿主同步 URL 与数据

onPageChange 只上报页码;URL、历史记录、请求、缓存以及筛选后重置到第一页都由宿主处理。

按空间选择显示模式

常规页面使用 pages,窄区域使用 compact;无论模式都提供能说明数据集合的 aria-label。

引入方式

从已验证的公开子路径导入组件;全局样式接入方式见安装指南。

import { BasePagination } from '@inf-monkeys-tech/monkeys-design/components/base';

当前限制

  • Pagination 不负责数据请求、URL 同步、筛选重置或 page-size selector;这些状态和副作用属于宿主。
  • T17 尚缺 manual keyboard/focus、deterministic visual 与最终 packed React 18/19 证据。
  • Manual keyboard/focus review, deterministic visual evidence, and final packed React 18/19 checks are pending T17/T23.
export interface BasePaginationProps
  extends Omit<
    HTMLAttributes<HTMLDivElement>,
    'children' | 'className' | 'onChange' | 'style'
  > {
  page?: number;
  defaultPage?: number;
  pageSize?: number;
  total?: number;
  mode?: 'compact' | 'pages';
  siblingCount?: number;
  boundaryCount?: number;
  label?: ReactNode;
  firstLabel?: ReactNode;
  previousLabel?: ReactNode;
  nextLabel?: ReactNode;
  lastLabel?: ReactNode;
  appearance?: BaseAppearance;
  className?: string;
  classNames?: BasePaginationClassNames;
  style?: CSSProperties;
  onPageChange?: (page: number) => void;
}
属性说明类型默认值
page分页器当前的受控页码。number
defaultPage非受控模式下初始显示的页码。number
pageSize每页对应的数据条数。number20
total分页数据的总条数。number0
mode分页器使用紧凑导航还是完整页码模式。'compact' | 'pages''compact'
siblingCount当前页两侧最多显示的相邻页码数量。number1
boundaryCount分页器两端始终显示的页码数量。number1
label分页导航区域的可访问名称。ReactNode
firstLabel跳转到第一页操作的标签内容。ReactNode
previousLabel跳转到上一页操作的标签内容。ReactNode
nextLabel跳转到下一页操作的标签内容。ReactNode
lastLabel跳转到最后一页操作的标签内容。ReactNode
appearance覆盖组件使用的外观令牌或局部样式配置。BaseAppearance
className追加到组件根元素的 CSS 类名。string
classNames按组件公开的结构插槽分别追加 CSS 类名。BasePaginationClassNames
style追加到组件根元素的内联样式。CSSProperties
onPageChange用户请求切换页码时调用的回调。(page: number) => void