@td-design/rn-hooks
Version:
从ahooks里面抽取的一些在rn项目里可以使用的hooks。提高开发效率
49 lines (45 loc) • 1.6 kB
JavaScript
;
var _tslib = require('../../_virtual/_tslib.js');
var react = require('react');
var index = require('../../useUpdateEffect/index.js');
var useAutoRunPlugin = function (fetchInstance, _a) {
var manual = _a.manual, _b = _a.ready, ready = _b === void 0 ? true : _b, _c = _a.defaultParams, defaultParams = _c === void 0 ? [] : _c, _d = _a.refreshDeps, refreshDeps = _d === void 0 ? [] : _d, refreshDepsAction = _a.refreshDepsAction;
var hasAutoRun = react.useRef(false);
hasAutoRun.current = false;
index(function () {
if (!manual && ready) {
hasAutoRun.current = true;
fetchInstance.run.apply(fetchInstance, _tslib.__spreadArray([], _tslib.__read(defaultParams), false));
}
}, [ready]);
index(function () {
if (hasAutoRun.current)
return;
if (!manual) {
hasAutoRun.current = true;
if (refreshDepsAction) {
refreshDepsAction();
}
else {
fetchInstance.refresh();
}
}
}, _tslib.__spreadArray([], _tslib.__read(refreshDeps), false));
return {
onBefore: function () {
if (!ready) {
return {
stopNow: true,
};
}
return {};
},
};
};
useAutoRunPlugin.onInit = function (_a) {
var _b = _a.ready, ready = _b === void 0 ? true : _b, _c = _a.manual, manual = _c === void 0 ? true : _c;
return {
loading: !manual && ready,
};
};
exports.useAutoRunPlugin = useAutoRunPlugin;