UNPKG

@taro-hooks/use-request

Version:
62 lines (61 loc) 1.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var core_1 = require("@taro-hooks/core"); var ahooks_1 = require("@taro-hooks/ahooks"); var shared_1 = require("@taro-hooks/shared"); // support refreshDeps & ready var useAutoRunPlugin = function useAutoRunPlugin(fetchInstance, _ref) { var manual = _ref.manual, _ref$ready = _ref.ready, ready = _ref$ready === void 0 ? true : _ref$ready, _ref$defaultParams = _ref.defaultParams, defaultParams = _ref$defaultParams === void 0 ? [] : _ref$defaultParams, _ref$refreshDeps = _ref.refreshDeps, refreshDeps = _ref$refreshDeps === void 0 ? [] : _ref$refreshDeps, refreshDepsAction = _ref.refreshDepsAction; var hasAutoRun = (0, core_1.useRef)(false); hasAutoRun.current = false; (0, ahooks_1.useUpdateEffect)(function () { if (!manual && (0, shared_1.escapeState)(ready)) { hasAutoRun.current = true; fetchInstance.run.apply(fetchInstance, defaultParams); } }, [ready]); (0, ahooks_1.useUpdateEffect)(function () { if (hasAutoRun.current) { return; } if (!manual) { hasAutoRun.current = true; if (refreshDepsAction) { refreshDepsAction(); } else { // due to vue not run every time for plugins. so remark hasAutoRun be folse fetchInstance.refresh(); if (shared_1.FRAMEWORK === 'vue') { hasAutoRun.current = false; } } } }, [].concat(refreshDeps)); return { onBefore: function onBefore() { if (!(0, shared_1.escapeState)(ready)) { return { stopNow: true }; } } }; }; useAutoRunPlugin.onInit = function (_ref2) { var _ref2$ready = _ref2.ready, ready = _ref2$ready === void 0 ? true : _ref2$ready, manual = _ref2.manual; return { loading: !manual && (0, shared_1.escapeState)(ready) }; }; exports["default"] = useAutoRunPlugin;