UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

73 lines (68 loc) 1.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); const usePagination = (service, options = {}) => { const { defaultPageSize = 20, defaultCurrent = 1, refreshDeps = [], ...rest } = options; const [result, setResult] = (0, _react.useState)({ loading: false, data: { pageIndex: defaultCurrent, pageSize: defaultPageSize } }); const getRequest = (0, _react.useCallback)(async (c = defaultCurrent, p = defaultPageSize) => { setResult(old => ({ ...old, loading: true })); const res = await service({ current: c, pageSize: p, ...rest }); setResult(old => ({ ...old, ...res, loading: false })); }, [service, ...refreshDeps]); const { pageIndex = 1, pageSize = defaultPageSize, totalCount = 0 } = result?.data || {}; // 总页数 const totalPage = (0, _react.useMemo)(() => Math.ceil(totalCount / pageSize), [pageSize, totalCount]); // 分页改变触发 const onChange = (c, p) => getRequest(c, p); // 手动重取数据, 不传入数据则触发刷新 const refetch = ({ current: c = pageIndex, pageSize: p = pageSize }) => getRequest(c, p); // 初始化获取数据 (0, _react.useEffect)(() => { getRequest(defaultCurrent, defaultPageSize); }, [getRequest]); return { ...result, refetch, pagination: { current: pageIndex, pageSize, total: totalCount, totalPage, onChange } }; }; var _default = usePagination; exports.default = _default;