diff --git a/src/components/Drawer/index.tsx b/src/components/Drawer/index.tsx index 94794cc..3ff2bb1 100644 --- a/src/components/Drawer/index.tsx +++ b/src/components/Drawer/index.tsx @@ -1,4 +1,3 @@ -/* eslint-disable tailwindcss/enforces-shorthand */ import { useEffect, useState } from 'react'; import clsx from 'clsx'; import Image from 'next/image'; @@ -11,6 +10,8 @@ import { useQueryClient } from '@tanstack/react-query'; interface DrawerProps { isLoggedIn: boolean; + isOpen: boolean; + setIsOpen: (isOpen: boolean) => void; userData: { email: string | null; id: string | null; @@ -19,9 +20,8 @@ interface DrawerProps { }; } -export default function Drawer({ isLoggedIn, userData }: DrawerProps) { +export default function Drawer({ isLoggedIn, userData, setIsOpen, isOpen }: DrawerProps) { const queryClient = useQueryClient(); - const [isOpen, setIsOpen] = useState(false); const [, setIsMobile] = useState(false); const router = useRouter(); @@ -36,6 +36,7 @@ export default function Drawer({ isLoggedIn, userData }: DrawerProps) { if (isLoggedIn) { await logout(queryClient); setIsOpen(false); + void router.push('/main'); } }; const closeDrawer = () => { @@ -60,12 +61,12 @@ export default function Drawer({ isLoggedIn, userData }: DrawerProps) { return () => { window.removeEventListener('resize', handleResize); }; - }, []); + }, [setIsOpen]); return (
- - {/* 모달 */} {isModalOpen && ( -
+
setIsModalOpen(false)} className="rounded-lg p-1 transition-colors duration-100 hover:bg-gray-50">
프로필 diff --git a/src/components/shared/GNB/index.tsx b/src/components/shared/GNB/index.tsx index b234e71..53c22dc 100644 --- a/src/components/shared/GNB/index.tsx +++ b/src/components/shared/GNB/index.tsx @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-return */ /* eslint-disable @typescript-eslint/no-unsafe-call */ -import React, { useEffect } from 'react'; +import React, { useEffect, useState } from 'react'; import clsx from 'clsx'; import Image from 'next/image'; import Link from 'next/link'; @@ -19,17 +19,22 @@ export default function GNB() { const isLoggedIn = userStore((state) => state.isLoggedIn); const logoutStore = userStore((state) => state.logout); const login = userStore((state) => state.login); + const [isOpen, setIsOpen] = useState(false); const userinfo = userStore((state) => state.user); const updateUser = userStore((state) => state.updateUser); - const { data, isPending, isError, error } = useQuery({ + const { data } = useQuery({ queryKey: ['queryUserInfo'], queryFn: getUserInfo, staleTime: 1000 * 60 * 5, gcTime: 1000 * 60 * 6, }); - + function toggleDrawer() { + if (isOpen) { + setIsOpen(false); + } + } useEffect(() => { const accessToken: string | null = localStorage.getItem('accessToken'); if (data && accessToken) { @@ -46,14 +51,11 @@ export default function GNB() { } }, [login, data, logoutStore, queryClient, updateUser]); - if (isPending) return
Loading...
; - if (isError) return
Error: {error.message}
; - return (