-
Notifications
You must be signed in to change notification settings - Fork 0
/
useRQGlobalState.ts
36 lines (33 loc) · 810 Bytes
/
useRQGlobalState.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { queryClient } from "@/components/ReactQueryProvider";
import {
useQuery,
useMutation,
QueryKey,
MutationFunction,
} from "@tanstack/react-query";
type TUseRQGlobalState<T> = {
initialData: T;
queryKey: QueryKey;
};
export default function useRQGlobalState<T>({
initialData,
queryKey,
}: TUseRQGlobalState<T>) {
const { data } = useQuery({
queryKey,
initialData: () => initialData,
});
const { mutate } = useMutation({
mutationFn: async (newData) => {
return newData;
},
onSuccess: (newData) => {
queryClient.setQueryData(queryKey, newData);
},
});
const setNewData = (newData: T) => {
const executeMutation = mutate as MutationFunction<typeof newData, unknown>;
executeMutation(newData);
};
return { data, setNewData };
}