UNPKG

vue-use-query

Version:

vue use query

41 lines (40 loc) 1.66 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import { onMounted, onUnmounted, reactive, watchEffect, toRefs } from 'vue'; import { noop, parseMutationArgs } from '../core/utils'; import { MutationObserver } from '../core/mutationObserver'; import { useQueryClient } from './QueryClientProvider'; export function useMutation(arg1, arg2, arg3) { var options = parseMutationArgs(arg1, arg2, arg3); var queryClient = useQueryClient(); var observer = new MutationObserver(queryClient, options); watchEffect(function () { var options = parseMutationArgs(arg1, arg2, arg3); observer.setOptions(options); }); var currentResult = reactive(observer.getCurrentResult()); // 订阅数据的变化 var unsubscribe; onMounted(function () { unsubscribe = observer.subscribe(function (res) { Object.assign(currentResult, res); }); }); onUnmounted(function () { unsubscribe === null || unsubscribe === void 0 ? void 0 : unsubscribe(); }); // 突变函数 var mutate = function (variables, mutateOptions) { observer.mutate(variables, mutateOptions).catch(noop); }; return __assign(__assign({}, toRefs(currentResult)), { mutate: mutate, mutateAsync: currentResult.mutate }); }