QueryClient
서버 데이터를 효율적으로 캐시하고, 공유하고, 갱신할 수 있도록 도와줌
// index.tsx
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
const queryClient = new QueryClient();
root.render (
<React.StrictMode>
<QueryClientProvider client={queryClient}>
<App />
</QueryClientProvider>
</React.StrictMode>
)
// 사용 예시
import { useMutation, useQueryClient } from "@tanstack/react-query";
export const useUnfollowPlaylist = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (params: UnfollowPlaylistRequest) => {
return UnfollowPlaylist(params);
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["current-user-playlists"] });
window.location.replace("/");
},
});
};
await queryClient.invalidateQueries(
{
queryKey: ['posts'],
exact,
refetchType: 'active',
},
{ throwOnError, cancelRefetch },
)
queryClient.invalidateQueries({ queryKey: ["current-user-playlists"] });
current-user-playlists의 queryKey를 가지고 있는 쿼리를 무효화 시키고 캐싱되어 있던 데이터 대신 새로운 데이터를 서버에 요청