jdcProject_front/src/hooks/usePagination.ts

42 lines
1014 B
TypeScript
Raw Normal View History

2022-10-24 13:17:43 +08:00
import { reactive } from "vue"
interface IDefaultPaginationData {
total: number
currentPage: number
pageSizes: number[]
pageSize: number
layout: string
}
interface IPaginationData {
total?: number
currentPage?: number
pageSizes?: number[]
pageSize?: number
layout?: string
}
/** 默认的分页参数 */
const defaultPaginationData: IDefaultPaginationData = {
total: 0,
currentPage: 1,
pageSizes: [10, 20, 50],
pageSize: 10,
layout: "total, sizes, prev, pager, next, jumper"
}
2023-05-19 20:47:52 +08:00
export function usePagination(initialPaginationData: IPaginationData = {}) {
2022-10-24 13:17:43 +08:00
/** 合并分页参数 */
2023-05-19 20:47:52 +08:00
const paginationData = reactive({ ...defaultPaginationData, ...initialPaginationData })
2022-10-24 13:17:43 +08:00
/** 改变当前页码 */
const handleCurrentChange = (value: number) => {
paginationData.currentPage = value
}
/** 改变页面大小 */
const handleSizeChange = (value: number) => {
paginationData.pageSize = value
}
return { paginationData, handleCurrentChange, handleSizeChange }
}