ahooks
Version:
react hooks library
60 lines (59 loc) • 1.95 kB
JavaScript
;
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 _react = require("react");
var _useUpdateEffect = _interopRequireDefault(require("../../../useUpdateEffect"));
// 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, _react.useRef)(false);
hasAutoRun.current = false;
(0, _useUpdateEffect["default"])(function () {
if (!manual && ready) {
hasAutoRun.current = true;
fetchInstance.run.apply(fetchInstance, (0, _toConsumableArray2["default"])(defaultParams));
}
}, [ready]);
(0, _useUpdateEffect["default"])(function () {
if (hasAutoRun.current) {
return;
}
if (!manual) {
hasAutoRun.current = true;
if (refreshDepsAction) {
refreshDepsAction();
} else {
fetchInstance.refresh();
}
}
}, (0, _toConsumableArray2["default"])(refreshDeps));
return {
onBefore: function onBefore() {
if (!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 && ready
};
};
var _default = exports["default"] = useAutoRunPlugin;