@td-design/rn-hooks
Version:
从ahooks里面抽取的一些在rn项目里可以使用的hooks。提高开发效率
48 lines (44 loc) • 2.5 kB
JavaScript
;
var _tslib = require('../_virtual/_tslib.js');
var react = require('react');
var index$1 = require('../useMemoizedFn/index.js');
var index = require('../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 = _tslib.__rest(options, ["defaultPageSize", "defaultCurrent"]);
var result = index.default(service, _tslib.__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 = react.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 = _tslib.__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, _tslib.__spreadArray([_tslib.__assign(_tslib.__assign({}, oldParams), { current: toPage, pageSize: toPageSize })], _tslib.__read(restParams), false));
};
var changeCurrent = function (current) {
onChange(current, pageSize);
};
var changePageSize = function (pageSize) {
onChange(current, pageSize);
};
return _tslib.__assign(_tslib.__assign({}, result), { pagination: {
current: current,
pageSize: pageSize,
total: total,
totalPage: totalPage,
onChange: index$1(onChange),
changeCurrent: index$1(changeCurrent),
changePageSize: index$1(changePageSize),
} });
};
module.exports = usePagination;