UNPKG

vue-admin-core

Version:
50 lines (47 loc) 1.58 kB
import { onMounted, toValue, onUnmounted } from 'vue'; import Fetch from './Fetch.mjs'; import { isEmpty } from 'lodash-es'; function useRequestImplement(service, options = {}, plugins = []) { const { manual = false, ...rest } = options; const fetchOptions = { manual, ...rest }; const initState = plugins.map((p) => { var _a; return (_a = p == null ? void 0 : p.onInit) == null ? void 0 : _a.call(p, fetchOptions); }).filter(Boolean); const fetchInstance = new Fetch( service, fetchOptions, Object.assign({}, ...initState) ); fetchInstance.options = fetchOptions; fetchInstance.pluginImpls = plugins.map((p) => p(fetchInstance, fetchOptions)); onMounted(() => { if (!manual) { let params = toValue(options.defaultParams || []); if (!isEmpty(toValue(fetchInstance.params))) { params = toValue(fetchInstance.params); } fetchInstance.run(...params); } }); onUnmounted(() => { fetchInstance.cancel(); }); return { loading: fetchInstance.loading, data: fetchInstance.data, error: fetchInstance.error, params: fetchInstance.params || [], cancel: fetchInstance.cancel.bind(fetchInstance), refresh: fetchInstance.refresh.bind(fetchInstance), refreshAsync: fetchInstance.refreshAsync.bind(fetchInstance), run: fetchInstance.run.bind(fetchInstance), runAsync: fetchInstance.runAsync.bind(fetchInstance), mutate: fetchInstance.mutate.bind(fetchInstance) }; } export { useRequestImplement as default }; //# sourceMappingURL=useRequestImplement.mjs.map