diff --git a/src/hooks/useAxios.tsx b/src/hooks/useAxios.tsx deleted file mode 100644 index 4760bd6..0000000 --- a/src/hooks/useAxios.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from "react"; - -import axios, { AxiosRequestConfig } from "axios"; - -const instance = axios.create({ - baseURL: "https://api.dongbti.com", - withCredentials: true, -}); - -export default function useAxios(config: AxiosRequestConfig, dependencies: ReadonlyArray = []) { - const [data, setData] = React.useState(null); - const [loading, setLoading] = React.useState(false); - const [error, setError] = React.useState(null); - - React.useEffect(() => { - const fetchData = async () => { - setLoading(true); - try { - const response = await instance(config); - setData(response.data); - console.log(response.data); - } catch (err: any) { - if (axios.isAxiosError(err)) { - setError(err.message || "Something went wrong"); - } else { - setError("Something went wrong"); - } - } finally { - setLoading(false); - } - }; - fetchData(); - }, dependencies); - - return { data, loading, error }; -} diff --git a/src/hooks/useSubmitResult.tsx b/src/hooks/useSubmitResult.tsx index bc9bb71..e2820fc 100644 --- a/src/hooks/useSubmitResult.tsx +++ b/src/hooks/useSubmitResult.tsx @@ -6,7 +6,7 @@ import { useUserInfo } from "@/store/store"; export const useSubmitResult = () => { const [isPending, setIsPending] = useState(false); - const major = useUserInfo((state) => state.major); + const department = useUserInfo((state) => state.department); const navigate = useNavigate(); const [searchParams] = useSearchParams(); @@ -15,7 +15,7 @@ export const useSubmitResult = () => { const mbti = searchParams.get("type"); console.log(searchParams); - api.post("/stats", { department: major, mbti }) + api.post("/stats", { department: department, mbti }) .then(() => { navigate(`/result?type=${mbti}`); }) diff --git a/src/pages/AnalyticsPage.tsx b/src/pages/AnalyticsPage.tsx index 3a4b7be..267ea7d 100644 --- a/src/pages/AnalyticsPage.tsx +++ b/src/pages/AnalyticsPage.tsx @@ -30,7 +30,7 @@ export interface top10Response { top: [string, number][]; } -const renderData = (data: top10Response | null, isPending: boolean, isError: any) => { +const renderData = (data: top10Response | null, isPending: boolean, isError: boolean) => { if (isPending) return 로딩중...; if (isError) return 오류가 발생했습니다.; if (!data) { diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx index 2154675..91aac7e 100644 --- a/src/pages/HomePage.tsx +++ b/src/pages/HomePage.tsx @@ -33,7 +33,7 @@ export default function HomePage() { const userInfo = useUserInfo((state) => state); const [isOpen, setIsOpen] = useState(false); - const [selectedMajor, setSelectedMajor] = useState(""); + const [selectedDepartment, setSelectedDepartment] = useState(userInfo.department); const handleSideBar = () => { setIsOpen(!isOpen); @@ -44,7 +44,7 @@ export default function HomePage() { toast.error("이름을 입력해주세용"); return; } - if (!userInfo.major) { + if (!userInfo.department) { toast.error("단과대학을 입력해주세용"); return; } @@ -52,8 +52,8 @@ export default function HomePage() { }; useEffect(() => { - userInfo.setMajor(selectedMajor); - }, [selectedMajor, userInfo.setMajor]); + userInfo.setDepartment(selectedDepartment); + }, [selectedDepartment, userInfo.setDepartment]); return ( @@ -98,13 +98,14 @@ export default function HomePage() { height="45px" placeholder="이름을 입력하세용" onChange={(e) => userInfo.setName(e.currentTarget.value)} + defaultValue={userInfo.name} /> 개인정보는 외부에 공유되지 않으니 안심하세용 diff --git a/src/store/store.ts b/src/store/store.ts index 562f30d..18aabdc 100644 --- a/src/store/store.ts +++ b/src/store/store.ts @@ -1,18 +1,28 @@ import { create } from "zustand"; +import { persist } from "zustand/middleware"; + type UserProps = { name: string; - major: string; + department: string; }; type UserAction = { setName: (name: UserProps["name"]) => void; - setMajor: (major: UserProps["major"]) => void; + setDepartment: (department: UserProps["department"]) => void; }; -export const useUserInfo = create()((set) => ({ - name: "", - major: "", - setName: (name) => set(() => ({ name: name })), - setMajor: (major) => set(() => ({ major: major })), -})); +export const useUserInfo = create()( + persist( + (set) => ({ + name: "", + department: "", + setName: (name) => set(() => ({ name: name })), + setDepartment: (department) => set(() => ({ department: department })), + }), + { + name: "user-storage", + getStorage: () => localStorage, + }, + ), +);