refactor: QueryClientProvider 선언 위치 변경

This commit is contained in:
2025-04-02 17:19:16 +09:00
parent 4e4bd82009
commit 0a51ac3f79
5 changed files with 32 additions and 22 deletions
+8 -1
View File
@@ -1,6 +1,7 @@
"use client"; "use client";
import { usePathname, useRouter } from "next/navigation"; import { usePathname, useRouter } from "next/navigation";
import { useQueryClient } from "@tanstack/react-query";
import type { MenuItem } from "@common/components/api"; import type { MenuItem } from "@common/components/api";
import { BaseLayout } from "@common/components/ui"; import { BaseLayout } from "@common/components/ui";
import { useMenuStore } from "@/shared/lib"; import { useMenuStore } from "@/shared/lib";
@@ -13,6 +14,8 @@ export default function WithBaseLayout({
}) { }) {
const router = useRouter(); const router = useRouter();
const pathname = usePathname(); const pathname = usePathname();
const queryClient = useQueryClient();
const { setCurrentMenuInfo } = useMenuStore((state) => state); const { setCurrentMenuInfo } = useMenuStore((state) => state);
const handleMenuClick = (item: MenuItem) => { const handleMenuClick = (item: MenuItem) => {
@@ -21,7 +24,11 @@ export default function WithBaseLayout({
}; };
return ( return (
<BaseLayout currentPath={pathname ?? ""} handleMenuClick={handleMenuClick}> <BaseLayout
queryClient={queryClient}
currentPath={pathname ?? ""}
handleMenuClick={handleMenuClick}
>
<PageLayout>{children}</PageLayout> <PageLayout>{children}</PageLayout>
</BaseLayout> </BaseLayout>
); );
+12 -8
View File
@@ -1,5 +1,6 @@
"use client"; "use client";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { ConfirmProvider } from "@frontend-opensource/use-react-hooks"; import { ConfirmProvider } from "@frontend-opensource/use-react-hooks";
import { AuthWrapper } from "@/entities/auth"; import { AuthWrapper } from "@/entities/auth";
import { MenuWrapper } from "@/entities/menu"; import { MenuWrapper } from "@/entities/menu";
@@ -7,15 +8,18 @@ import { StoreProvider } from "@/shared/providers";
import { AlertDialog } from "@/shared/ui/alert-dialog"; import { AlertDialog } from "@/shared/ui/alert-dialog";
const AppProvider = ({ children }: Readonly<{ children: React.ReactNode }>) => { const AppProvider = ({ children }: Readonly<{ children: React.ReactNode }>) => {
const queryClient = new QueryClient();
return ( return (
<StoreProvider> <QueryClientProvider client={queryClient}>
<ConfirmProvider> <StoreProvider>
<AuthWrapper> <ConfirmProvider>
<MenuWrapper>{children}</MenuWrapper> <AuthWrapper>
<AlertDialog /> <MenuWrapper>{children}</MenuWrapper>
</AuthWrapper> <AlertDialog />
</ConfirmProvider> </AuthWrapper>
</StoreProvider> </ConfirmProvider>
</StoreProvider>
</QueryClientProvider>
); );
}; };
+1 -6
View File
@@ -45,12 +45,7 @@ function ModifyPage({ siteId }: { siteId: string }) {
const { mutateAsync: deleteSite } = useMutation({ const { mutateAsync: deleteSite } = useMutation({
mutationFn: () => SiteApi.deleteSite(siteId), mutationFn: () => SiteApi.deleteSite(siteId),
onSuccess: () => { onSuccess: () => {
alert("삭제되었습니다.", () => { alert("삭제되었습니다.", router.back);
queryClient.invalidateQueries({
queryKey: [ENDPOINT.CMS_SERVICE.SITES],
});
router.back();
});
}, },
}); });
@@ -2,13 +2,17 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
export function QueryProvider({ export function QueryProvider({
children, children,
client, queryClient,
}: { }: {
children: React.ReactNode; children: React.ReactNode;
client?: QueryClient; queryClient?: QueryClient;
}) { }) {
const queryClient = client ?? new QueryClient(); if (!queryClient) {
return ( const queryClient = new QueryClient();
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider> return (
); <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
);
}
return <>{children}</>;
} }
@@ -19,7 +19,7 @@ export function BaseLayout({
handleMenuClick?: (item: MenuItem) => void; handleMenuClick?: (item: MenuItem) => void;
}) { }) {
return ( return (
<QueryProvider client={queryClient}> <QueryProvider queryClient={queryClient}>
<SidebarProvider> <SidebarProvider>
<div className="flex-1"> <div className="flex-1">
<Header /> <Header />