@taro-hooks/use-request
Version:
useRequest hook for Taro
62 lines (61 loc) • 1.92 kB
JavaScript
"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;