@td-design/react-native
Version:
react-native UI组件库
43 lines (41 loc) • 1.13 kB
JavaScript
import { useEffect } from 'react';
import { useMemoizedFn, useSafeState } from '@td-design/rn-hooks';
export default function usePagination(_ref) {
let {
page = 1,
pageSize = 10,
total,
onChange
} = _ref;
const [current, setCurrent] = useSafeState(page);
const [totalPage, setTotalPage] = useSafeState(Math.ceil(total / pageSize));
useEffect(() => {
setCurrent(page);
}, [page]);
useEffect(() => {
setTotalPage(Math.ceil(total / pageSize));
}, [pageSize, total]);
const isFirstPage = current === 1;
const isLastPage = current === totalPage;
/** 前一页 */
const prev = () => {
const perPage = current - 1;
setCurrent(perPage);
onChange === null || onChange === void 0 ? void 0 : onChange(perPage);
};
/** 后一页 */
const next = () => {
const nextPage = current + 1;
setCurrent(nextPage);
onChange === null || onChange === void 0 ? void 0 : onChange(nextPage);
};
return {
current,
totalPage,
isFirstPage,
isLastPage,
prev: useMemoizedFn(prev),
next: useMemoizedFn(next)
};
}
//# sourceMappingURL=usePagination.js.map