UNPKG

@td-design/rn-hooks

Version:

从ahooks里面抽取的一些在rn项目里可以使用的hooks。提高开发效率

46 lines (43 loc) 2.48 kB
import { __rest, __assign, __read, __spreadArray } from '../_virtual/_tslib.js'; import { useMemo } from 'react'; import useMemoizedFn from '../useMemoizedFn/index.js'; import useRequest from '../useRequest/index.js'; var usePagination = function (service, options) { var _a, _b, _c; if (options === void 0) { options = {}; } var _d = options.defaultPageSize, defaultPageSize = _d === void 0 ? 10 : _d, _e = options.defaultCurrent, defaultCurrent = _e === void 0 ? 1 : _e, rest = __rest(options, ["defaultPageSize", "defaultCurrent"]); var result = useRequest(service, __assign({ defaultParams: [{ current: defaultCurrent, pageSize: defaultPageSize }], refreshDepsAction: function () { // eslint-disable-next-line @typescript-eslint/no-use-before-define changeCurrent(1); } }, rest)); var _f = (_a = result.params[0]) !== null && _a !== void 0 ? _a : {}, _g = _f.current, current = _g === void 0 ? 1 : _g, _h = _f.pageSize, pageSize = _h === void 0 ? defaultPageSize : _h; var total = (_c = (_b = result.data) === null || _b === void 0 ? void 0 : _b.total) !== null && _c !== void 0 ? _c : 0; var totalPage = useMemo(function () { return Math.ceil(total / pageSize); }, [pageSize, total]); var onChange = function (current, pageSize) { var _a; var toPage = current <= 0 ? 1 : current; var toPageSize = pageSize <= 0 ? 1 : pageSize; var tempTotalPage = Math.ceil(total / toPageSize); if (toPage > tempTotalPage) { toPage = Math.max(1, tempTotalPage); } var _b = __read((_a = result.params) !== null && _a !== void 0 ? _a : []), _c = _b[0], oldParams = _c === void 0 ? {} : _c, restParams = _b.slice(1); result.run.apply(result, __spreadArray([__assign(__assign({}, oldParams), { current: toPage, pageSize: toPageSize })], __read(restParams), false)); }; var changeCurrent = function (current) { onChange(current, pageSize); }; var changePageSize = function (pageSize) { onChange(current, pageSize); }; return __assign(__assign({}, result), { pagination: { current: current, pageSize: pageSize, total: total, totalPage: totalPage, onChange: useMemoizedFn(onChange), changeCurrent: useMemoizedFn(changeCurrent), changePageSize: useMemoizedFn(changePageSize), } }); }; export { usePagination as default };