Pagination

分页控件:当前页高亮,过长的页码序列自动折叠为省略号,到达首页/末页时对应箭头禁用。下方预览由 pingo 引擎实时渲染——可以点击页码与箭头翻页,并跟随站点主题切换明暗。

用法

页码是受控的:page 从 1 开始,翻页通过 onPageChange 上报,由你回写。

import { createElement, useSignal, type PingoNode } from "@dopejs/pingo";
import { Pagination } from "@dopejs/pingo-ui";

function PagedList(): PingoNode {
  const page = useSignal(1);
  return createElement(Pagination, {
    page: page.get(),
    pageCount: 12,
    onPageChange: (next) => page.set(next),
  });
}

示例

紧凑模式

siblingCount 控制当前页两侧展示的页码数(不含首尾页,首尾恒显示)。设为 0 时只保留首尾与当前页;在首页时上一页箭头禁用。

页码序列的折叠规则由导出的纯函数 paginationRange(page, pageCount, siblingCount) 实现,可单独用于测试。

Props

Prop 类型 默认值 说明
page number 当前页,从 1 开始(必填);越界会被收敛到 [1, pageCount]
pageCount number 总页数(必填);小于 1 时不渲染任何页码
onPageChange (page: number) => void 翻页回调;点击当前页或越界目标不会触发
siblingCount number 1 当前页两侧各展示的页码数
previousLabel string 类型中预留的上一页文案;当前版本渲染为图标,该字段尚未参与渲染
nextLabel string 类型中预留的下一页文案;当前版本渲染为图标,该字段尚未参与渲染
className string 追加在组件类名之后

无障碍

控件整体是 navigation 语义;当前页带 current 语义值,前后翻页按钮的无障碍名称为 "previous page" / "next page",到达边界时禁用且不响应指针。键盘上 ArrowLeft / ArrowRight 在控件内任意焦点处翻页。更多见无障碍指南

最后更新: