一个 React Hook,用于管理分页状态。
请查看 API。
点击下方链接跳转 GitHub 查看源代码。
const [pagination, pagiActions] = usePagination(options)
export type UsePaginationOptions = {
/**
* 总项目数。
*
* @defaultValue Number.POSITIVE_INFINITY
*/
total?: number
/**
* 每页展示的项目数。
*
* @defaultValue 10
*/
pageSize?: number
/**
* 当前页码。
*
* @defaultValue 1
*/
page?: number
/**
* 当 `page` 发生变化时的回调。
*/
onPageChange?: (pagination: UsePaginationReturnsState) => void
/**
* 当 `pageSize` 发生变化时的回调。
*/
onPageSizeChange?: (pagination: UsePaginationReturnsState) => void
/**
* 当 `pageCount` 发生变化时的回调。
*/
onPageCountChange?: (pagination: UsePaginationReturnsState) => void
}
export interface UsePaginationReturnsState<T = any> {
/**
* 列表总项目数。
*/
total: number
/**
* 当前页码。
*
* @deprecated 请使用 `page` 代替。
*/
currentPage: number
/**
* 当前每页展示的项目数。
*
* @deprecated 请使用 `pageSize` 代替。
*/
currentPageSize: number
/**
* 当前页码。
*/
page: number
/**
* 当前每页展示的项目数。
*/
pageSize: number
/**
* 总页数。
*/
pageCount: number
/**
* 当前列表数据的起始索引。
*/
indexStart: number
/**
* 当前列表数据的结束索引。
*/
indexEnd: number
/**
* 当前展示的列表的起始计数。
*/
countStart: number
/**
* 当前展示的列表的结束计数。
*/
countEnd: number
/**
* 是否为第一页。
*/
isFirstPage: boolean
/**
* 是否为最后一页。
*/
isLastPage: boolean
/**
* 分页后的列表数据。
*/
list: T[]
}
export interface UsePaginationReturnsActions {
/**
* 前往上一页。
*
* @returns {void} `void`
*/
prev(): void
/**
* 前往下一页。
*
* @returns {void} `void`
*/
next(): void
/**
* 前往指定页码。
*
* @param {number} page - `number`,页码
* @returns {void} `void`
*/
go: (page: number) => void
/**
* 设置每页展示的项目数。
*
* @param {number} size - `number`,每页展示的项目数
* @returns {void} `void`
*/
setPageSize: (size: number) => void
}
export type UsePaginationReturns = readonly [UsePaginationReturnsState, UsePaginationReturnsActions]