vue-hooks-plus
Version:
Vue hooks library
80 lines (79 loc) • 2.16 kB
JavaScript
const vue = require("vue");
const useRequest = require("../useRequest");
const lodashEs = require("lodash-es");
const _interopDefaultLegacy = (e) => e && typeof e === "object" && "default" in e ? e : { default: e };
const useRequest__default = /* @__PURE__ */ _interopDefaultLegacy(useRequest);
function createUseRequestComponent() {
const Comp = vue.defineComponent({
name: "UseRequest",
props: {
service: {
type: Function,
required: true
},
manual: {
type: Boolean,
default: false
},
ready: {
type: Object,
default: () => ({
ready: false
})
},
refreshDeps: {
type: Array,
default: () => []
},
plugins: {
type: Array,
default: () => []
},
formatResult: {
type: Function,
default: void 0
}
},
slots: Object,
setup(props, { slots }) {
const service = vue.computed(() => vue.unref(props.service));
const plugins = vue.computed(() => vue.unref(props.plugins));
const manual = props.manual;
const ready = vue.computed(() => props.ready);
const refreshDeps = vue.computed(() => props.refreshDeps);
const options = {
ready,
refreshDeps,
manual: props.manual,
formatResult: props.formatResult
};
const result = useRequest__default.default(
service.value,
options,
plugins.value
);
vue.watch(refreshDeps, (newVal, oldVal) => {
if (lodashEs.isEqual(newVal, oldVal))
return;
if (!manual) {
result == null ? void 0 : result.refresh();
}
});
return () => {
if (result.loading.value && slots.loading) {
return slots.loading();
}
if (result.error.value && slots.error) {
return slots.error({ error: result.error.value });
}
if (slots.default) {
return slots.default(vue.computed(() => result).value);
}
return null;
};
}
});
return Comp;
}
module.exports = createUseRequestComponent;
;