the-forest/client/node_modules/@tanstack/react-query/build/modern/useMutation.js

41 lines
1.2 KiB
JavaScript
Raw Normal View History

2024-09-17 20:35:18 -04:00
"use client";
// src/useMutation.ts
import * as React from "react";
import { MutationObserver, notifyManager } from "@tanstack/query-core";
import { useQueryClient } from "./QueryClientProvider.js";
import { noop, shouldThrowError } from "./utils.js";
function useMutation(options, queryClient) {
const client = useQueryClient(queryClient);
const [observer] = React.useState(
() => new MutationObserver(
client,
options
)
);
React.useEffect(() => {
observer.setOptions(options);
}, [observer, options]);
const result = React.useSyncExternalStore(
React.useCallback(
(onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),
[observer]
),
() => observer.getCurrentResult(),
() => observer.getCurrentResult()
);
const mutate = React.useCallback(
(variables, mutateOptions) => {
observer.mutate(variables, mutateOptions).catch(noop);
},
[observer]
);
if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {
throw result.error;
}
return { ...result, mutate, mutateAsync: result.mutate };
}
export {
useMutation
};
//# sourceMappingURL=useMutation.js.map