@tanstack/react-query
Version:
Hooks for managing, caching and syncing asynchronous and remote data in React
59 lines (49 loc) • 2 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var useSyncExternalStore = require('./useSyncExternalStore');
var queryCore = require('@tanstack/query-core');
var QueryClientProvider = require('./QueryClientProvider.js');
var utils = require('./utils.js');
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n["default"] = e;
return Object.freeze(n);
}
var React__namespace = /*#__PURE__*/_interopNamespace(React);
function useMutation(arg1, arg2, arg3) {
const options = queryCore.parseMutationArgs(arg1, arg2, arg3);
const queryClient = QueryClientProvider.useQueryClient({
context: options.context
});
const [observer] = React__namespace.useState(() => new queryCore.MutationObserver(queryClient, options));
React__namespace.useEffect(() => {
observer.setOptions(options);
}, [observer, options]);
const result = useSyncExternalStore.useSyncExternalStore(React__namespace.useCallback(onStoreChange => observer.subscribe(queryCore.notifyManager.batchCalls(onStoreChange)), [observer]), () => observer.getCurrentResult(), () => observer.getCurrentResult());
const mutate = React__namespace.useCallback((variables, mutateOptions) => {
observer.mutate(variables, mutateOptions).catch(noop);
}, [observer]);
if (result.error && utils.shouldThrowError(observer.options.useErrorBoundary, [result.error])) {
throw result.error;
}
return { ...result,
mutate,
mutateAsync: result.mutate
};
} // eslint-disable-next-line @typescript-eslint/no-empty-function
function noop() {}
exports.useMutation = useMutation;
//# sourceMappingURL=useMutation.js.map