@slan-health/taro-vueuse
Version:
taro vue版本hooks
41 lines (40 loc) • 1.26 kB
JavaScript
import { inject, onUnmounted } from "vue";
import { GLOBAL_OPTIONS_PROVIDE_KEY, getGlobalOptions } from "./config.js";
import createQuery from "./createQuery.js";
function useQuery(service, options = {}, plugins) {
const injectedGlobalOptions = inject(
GLOBAL_OPTIONS_PROVIDE_KEY,
{}
);
const config = {
...getGlobalOptions(),
...injectedGlobalOptions,
...options
};
const { manual = false, defaultParams = [] } = config;
const queryInstance = createQuery(service, config);
queryInstance.plugins.value = plugins.map((i) => i(queryInstance, config));
if (!manual) {
const params = queryInstance.params.value || defaultParams;
queryInstance.context.run(...params);
}
onUnmounted(() => {
queryInstance.context.cancel();
});
return {
loading: queryInstance.loading,
data: queryInstance.data,
error: queryInstance.error,
params: queryInstance.params,
cancel: queryInstance.context.cancel,
refresh: queryInstance.context.refresh,
refreshAsync: queryInstance.context.refreshAsync,
mutate: queryInstance.context.mutate,
run: queryInstance.context.run,
runAsync: queryInstance.context.runAsync
};
}
export {
useQuery as default
};
//# sourceMappingURL=useQuery.js.map