UNPKG

ahooks

Version:
76 lines (75 loc) 3.72 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _tslib = require("tslib"); var _useCreation = _interopRequireDefault(require("../../useCreation")); var _useLatest = _interopRequireDefault(require("../../useLatest")); var _useMemoizedFn = _interopRequireDefault(require("../../useMemoizedFn")); var _useMount = _interopRequireDefault(require("../../useMount")); var _useUnmount = _interopRequireDefault(require("../../useUnmount")); var _useUpdate = _interopRequireDefault(require("../../useUpdate")); var _isDev = _interopRequireDefault(require("../../utils/isDev")); var _Fetch = _interopRequireDefault(require("./Fetch")); function useRequestImplement(service) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var plugins = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; var _options$manual = options.manual, manual = _options$manual === void 0 ? false : _options$manual, _options$ready = options.ready, ready = _options$ready === void 0 ? true : _options$ready, rest = (0, _tslib.__rest)(options, ["manual", "ready"]); if (_isDev["default"]) { if (options.defaultParams && !Array.isArray(options.defaultParams)) { console.warn("expected defaultParams is array, got ".concat((0, _typeof2["default"])(options.defaultParams))); } } var fetchOptions = Object.assign({ manual: manual, ready: ready }, rest); var serviceRef = (0, _useLatest["default"])(service); var update = (0, _useUpdate["default"])(); var fetchInstance = (0, _useCreation["default"])(function () { var initState = plugins.map(function (p) { var _a; return (_a = p === null || p === void 0 ? void 0 : p.onInit) === null || _a === void 0 ? void 0 : _a.call(p, fetchOptions); }).filter(Boolean); return new _Fetch["default"](serviceRef, fetchOptions, update, Object.assign.apply(Object, [{}].concat((0, _toConsumableArray2["default"])(initState)))); }, []); fetchInstance.options = fetchOptions; // run all plugins hooks fetchInstance.pluginImpls = plugins.map(function (p) { return p(fetchInstance, fetchOptions); }); (0, _useMount["default"])(function () { if (!manual && ready) { // useCachePlugin can set fetchInstance.state.params from cache when init var params = fetchInstance.state.params || options.defaultParams || []; // @ts-ignore fetchInstance.run.apply(fetchInstance, (0, _toConsumableArray2["default"])(params)); } }); (0, _useUnmount["default"])(function () { fetchInstance.cancel(); }); return { loading: fetchInstance.state.loading, data: fetchInstance.state.data, error: fetchInstance.state.error, params: fetchInstance.state.params || [], cancel: (0, _useMemoizedFn["default"])(fetchInstance.cancel.bind(fetchInstance)), refresh: (0, _useMemoizedFn["default"])(fetchInstance.refresh.bind(fetchInstance)), refreshAsync: (0, _useMemoizedFn["default"])(fetchInstance.refreshAsync.bind(fetchInstance)), run: (0, _useMemoizedFn["default"])(fetchInstance.run.bind(fetchInstance)), runAsync: (0, _useMemoizedFn["default"])(function () { return fetchInstance.runAsync.apply(fetchInstance, arguments); }), mutate: (0, _useMemoizedFn["default"])(fetchInstance.mutate.bind(fetchInstance)) }; } var _default = exports["default"] = useRequestImplement;