组件 · 导航

Pagination 分页

列表分页控件;常与 Table 引擎分页配置或独立列表状态联动。

入口 @selrux/ui/pagination · 源码 src/components/pagination/index.ts · 8 个组件 · 发布状态 preview

使用建议

  • 避免:杜撰全局断点 Token 驱动分页布局
  • 限制:页码状态由应用持有

引入

tsx
import {
  Pagination,
  PaginationContent,
  PaginationEllipsis,
  PaginationItem,
  PaginationLink,
  PaginationNext,
  // …共 8 个导出
} from '@selrux/ui/pagination';

演练场

调节下方可实现的字面量属性,实时预览真实组件。函数、Portal、样式逃生口等见代码演示与 API 表。

代码演示

基础用法

total 总条数,默认每页 10 条。

完整功能

每页条数切换、快速跳转与总数显示。

简洁与禁用

simple 精简模式;disabled 禁用全部交互。

尺寸

size 六档。

受控

current / pageSize / onChange 受控并显示当前页;onShowSizeChange 切换每页条数;pageSizeOptions 选项;defaultPageSize 为非受控初始值。

第 3 页,每页 20 条

显示控制

hideOnSinglePage 只有一页时隐藏;showLessItems 减少页码;showTitle 显示原生提示;align 对齐;totalBoundaryShowSizeChanger 超过该条数自动显示每页条数;responsive 窄屏自动简化;locale 覆盖文案。

自定义渲染

itemRender 改写页码与上一页 / 下一页;components.sizeChanger 替换每页条数选择器(这里仍使用 PaginationSizeChanger 并指定 size)。

组合式

PaginationContent / Item / Link(isActive)/ Previous / Next(text、isActive)/ Ellipsis 手写链接分页;PaginationSizeChanger 的 value / options / size。

API

属性覆盖:示例用到 31 / 31 个自有属性(100%)

由 scripts/demo-coverage.mjs 统计,不含 className / style / 原生透传属性与纯转发事件。

  • Pagination.styles:语义 slot 内联样式,与 className/style 同类的样式逃生口,不单独演示

Pagination

主题化分页导航根。 有 total 走引擎(antd 配置);否则为 shadcn 组合壳。

属性说明类型默认值
size-"xs" | "sm" | "md" | "lg" | "xl" | "2xl"-
total数据总数;存在时启用引擎。number-
current受控当前页。number-
defaultCurrent非受控默认当前页。number-
pageSize受控每页条数。number-
defaultPageSize非受控默认每页条数。number-
onChange页码或 pageSize 变化。((page: number, pageSize: number) => void)-
onShowSizeChangepageSize 变化。((current: number, size: number) => void)-
disabled禁用。boolean-
hideOnSinglePage仅一页时隐藏。boolean-
showLessItems显示较少页码。boolean-
showTitle原生 title 提示。boolean-
align对齐。"start" | "end" | "center"-
showQuickJumper快速跳转。PaginationQuickJumper-
showSizeChangerpageSize 切换器。PaginationShowSizeChanger-
showTotal总量文案。((total: number, range: [number, number]) => ReactNode)-
simple简洁模式。PaginationSimple-
pageSizeOptions每页条数选项。readonly (string | number)[]-
totalBoundaryShowSizeChanger当未显式传 showSizeChanger 且 total 大于该值时,默认开启 sizeChanger。number50
itemRender自定义页项结构。((page: number, type: PaginationItemRenderType, originalElement: ReactElement) => ReactNode)-
components替换内部部件。{ sizeChanger?: (props: PaginationSizeChangerRenderProps) => ReactElement | null; }-
responsivesize 未指定时按视口收窄(由 UI 解释)。boolean-
locale文案。PaginationLocale-
classNames语义 className。Partial<Record<PaginationSemanticSlot, string>> | ((info: { props: PaginationProps; }) => Partial<Record<PaginationSemanticSlot, string>>)-
styles语义 style。Partial<Record<PaginationSemanticSlot, CSSProperties>> | ((info: { props: PaginationProps; }) => Partial<Record<PaginationSemanticSlot, CSSProperties>>)-

另有 279 项原生属性与事件继承自 HTMLAttributes,原样透传。

PaginationContent

主题化分页列表(ul)。

无自有属性;其余 280 项原生属性继承自 HTMLAttributes。

PaginationEllipsis

主题化省略号。 对齐 shadcn:MoreHorizontal + 屏幕阅读文案 More pages。

无自有属性;其余 280 项原生属性继承自 HTMLAttributes。

PaginationItem

主题化列表项(li)。

无自有属性;其余 281 项原生属性继承自 HTMLAttributes / LiHTMLAttributes。

主题化页码链接。 对齐 shadcn:isActive → outline,否则 ghost;渲染为 a。

属性说明类型默认值
isActive当前页时设置 aria-current=page。boolean-

另有 288 项原生属性与事件继承自 AnchorHTMLAttributes / HTMLAttributes,原样透传。

PaginationNext

主题化下一页。 对齐 shadcn:可覆盖 text(默认 Next)+ ChevronRight;小屏隐藏文案。

属性说明类型默认值
text可见文案。string-
isActive当前页时设置 aria-current=page。boolean-

另有 288 项原生属性与事件继承自 AnchorHTMLAttributes / HTMLAttributes,原样透传。

PaginationPrevious

主题化上一页。 对齐 shadcn:ChevronLeft + 可覆盖 text(默认 Previous);小屏隐藏文案。

属性说明类型默认值
text可见文案。string-
isActive当前页时设置 aria-current=page。boolean-

另有 288 项原生属性与事件继承自 AnchorHTMLAttributes / HTMLAttributes,原样透传。

PaginationSizeChanger

主题化 pageSize 切换器(Select)。

属性说明类型默认值
value *-number-
options *-number[]-
size-"xs" | "sm" | "md" | "lg" | "xl" | "2xl"-

另有 4 项原生属性与事件继承自 ,原样透传。

导出类型:PaginationContentProps、PaginationEllipsisProps、PaginationEngineProps、PaginationItemProps、PaginationItemRenderType、PaginationLinkProps、PaginationLocale、PaginationNextProps、PaginationPreviousProps、PaginationProps、PaginationSemanticSlot、PaginationShellProps、PaginationSize、PaginationSizeChangerRenderProps

无障碍

摘自源码 JSDoc。

  • 对齐 shadcn:MoreHorizontal + 屏幕阅读文案 More pages。
  • PaginationLink.isActive:当前页时设置 aria-current=page。
  • PaginationNext.isActive:当前页时设置 aria-current=page。
  • PaginationPrevious.isActive:当前页时设置 aria-current=page。