UNPKG

@td-design/rn-hooks

Version:

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

83 lines (79 loc) 3.53 kB
'use strict'; var _tslib = require('../_virtual/_tslib.js'); var index$2 = require('../useMemoizedFn/index.js'); var index$1 = require('../useRequest/index.js'); var index = require('../useSafeState/index.js'); var index$3 = require('../useUpdateEffect/index.js'); var INITIAL_PAGE = 1; var INITIAL_PAGE_SIZE = 10; function useInfiniteScroll(service, options) { var _this = this; var _a = options || {}, _b = _a.manual, manual = _b === void 0 ? false : _b, _c = _a.refreshDeps, refreshDeps = _c === void 0 ? [] : _c, onBefore = _a.onBefore, onSuccess = _a.onSuccess, onError = _a.onError, onFinally = _a.onFinally; var _d = _tslib.__read(index(), 2), data = _d[0], setData = _d[1]; var _e = _tslib.__read(index(false), 2), loadingMore = _e[0], setLoadingMore = _e[1]; var _f = _tslib.__read(index(false), 2), noMoreData = _f[0], setNoMoreData = _f[1]; var _g = index$1.default(function (lastData) { return _tslib.__awaiter(_this, void 0, void 0, function () { var currentData; return _tslib.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, service(lastData ? { page: lastData.page + 1, pageSize: lastData.pageSize, } : { page: INITIAL_PAGE, pageSize: INITIAL_PAGE_SIZE, })]; case 1: currentData = _a.sent(); if (!currentData) { setNoMoreData(true); return [2 /*return*/, currentData]; } setNoMoreData(currentData.page * currentData.pageSize >= currentData.total); if (!lastData) { setData(_tslib.__assign(_tslib.__assign({}, currentData), { list: _tslib.__spreadArray([], _tslib.__read((currentData.list || [])), false) })); } else { setData(_tslib.__assign(_tslib.__assign({}, currentData), { list: _tslib.__spreadArray(_tslib.__spreadArray([], _tslib.__read((lastData.list || [])), false), _tslib.__read((currentData.list || [])), false) })); } return [2 /*return*/, currentData]; } }); }); }, { manual: manual, onBefore: onBefore, onSuccess: onSuccess, onError: onError, onFinally: function (_, d, e) { setLoadingMore(false); onFinally === null || onFinally === void 0 ? void 0 : onFinally(d, e); }, }), loading = _g.loading, error = _g.error, run = _g.run, runAsync = _g.runAsync, cancel = _g.cancel; var loadMore = index$2(function () { if (noMoreData) return; setLoadingMore(true); return run(data); }); var refresh = index$2(function () { setLoadingMore(false); return runAsync(); }); index$3(function () { run(); }, _tslib.__spreadArray([], _tslib.__read(refreshDeps), false)); return { data: (data === null || data === void 0 ? void 0 : data.list) || [], loading: loading, loadingMore: loadingMore, noMoreData: noMoreData, error: error, loadMore: loadMore, refresh: refresh, cancel: cancel, mutate: setData, }; } module.exports = useInfiniteScroll;