From b5dce089dcd77f62c0642a9f737ebbe3aabbf813 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=97=B0=EC=A7=84?= Date: Mon, 4 Aug 2025 02:44:06 +0900 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=ED=83=80=EC=9E=85=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20=EB=94=94=EB=B0=94=EC=9A=B4=EC=8A=A4=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0,=20=EA=B2=80=EC=83=89=20=EB=B2=84=ED=8A=BC?= =?UTF-8?q?=20=ED=81=B4=EB=A6=AD/=EC=97=94=ED=84=B0=20=EC=9E=85=EB=A0=A5?= =?UTF-8?q?=EC=8B=9C=EC=97=90=EB=A7=8C=20=EA=B2=80=EC=83=89=20=EC=9E=91?= =?UTF-8?q?=EB=8F=99=ED=95=98=EB=8A=94=20=EA=B5=AC=EC=A1=B0=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dateCourseSearchFilterOption.tsx | 21 +++++++++---------- src/hooks/course/useSearchRegion.tsx | 5 +++-- src/types/dateCourse.ts | 19 ++++++++++++++++- 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/src/components/dateCourse/dateCourseSearchFilterOption.tsx b/src/components/dateCourse/dateCourseSearchFilterOption.tsx index 348f15d..4028b60 100644 --- a/src/components/dateCourse/dateCourseSearchFilterOption.tsx +++ b/src/components/dateCourse/dateCourseSearchFilterOption.tsx @@ -1,10 +1,9 @@ import React, { useEffect, useRef, useState } from 'react'; -import type { TDateCourseSearchFilterOption } from '@/types/dateCourse'; +import type { TDateCourseSearchFilterOption, TRegion } from '@/types/dateCourse'; import DATE_KEYWORD from '@/constants/dateKeywords'; import { useSearchRegion } from '@/hooks/course/useSearchRegion'; -import useDebounce from '@/hooks/useDebounce'; import DateCourseOptionButton from './dateCourseOptionButton'; import DateKeyword from './dateKeyword'; @@ -26,8 +25,6 @@ export default function DateCourseSearchFilterOption({ options, type, value, onC const [inputValue, setInputValue] = useState(''); const [showSearchResults, setShowSearchResults] = useState(false); - const debouncedInputValue = useDebounce(inputValue, 3000); - useEffect(() => { onChange(`${date} ${time}`); }, []); @@ -50,10 +47,12 @@ export default function DateCourseSearchFilterOption({ options, type, value, onC setInputValue(e.target.value); }; - const { data: regionList } = useSearchRegion({ keyword: debouncedInputValue }); + const { data: regionList, refetch } = useSearchRegion({ keyword: inputValue }, { enabled: false }); const handleSearch = () => { - if (!inputValue.trim()) return; + const keyword = inputValue.trim(); + if (!keyword) return; + refetch(); setShowSearchResults(true); }; @@ -98,20 +97,20 @@ export default function DateCourseSearchFilterOption({ options, type, value, onC {showSearchResults && regionList && regionList.result.regions.length > 0 && ( diff --git a/src/hooks/course/useSearchRegion.tsx b/src/hooks/course/useSearchRegion.tsx index 919e621..bcbafde 100644 --- a/src/hooks/course/useSearchRegion.tsx +++ b/src/hooks/course/useSearchRegion.tsx @@ -2,8 +2,9 @@ import { useCoreQuery } from '../customQuery'; import { searchRegion } from '@/api/course/course'; -export function useSearchRegion({ keyword }: { keyword: string }) { +export function useSearchRegion({ keyword }: { keyword: string }, options?: { enabled?: boolean }) { return useCoreQuery(['searchRegion', keyword], () => searchRegion({ keyword }), { - enabled: !!keyword, + enabled: options?.enabled ?? true, + staleTime: 1000 * 60 * 5, }); } diff --git a/src/types/dateCourse.ts b/src/types/dateCourse.ts index e6734f4..06a5e80 100644 --- a/src/types/dateCourse.ts +++ b/src/types/dateCourse.ts @@ -70,7 +70,24 @@ export type TSearchRegionValues = { }; export type TSearchRegionResponse = TCommonResponse<{ - regions: string[]; + regions: TRegion[]; keyword: string; resultCount: number; }>; + +export type TRegion = { + regionId: number; + name: string; + latitude: number; + longitude: number; + gridX: number; + gridY: number; + regionCode: { + landRegCode: string; + tempRegCode: string; + regionCodeId: number; + name: string; + }; + createdAt: string; + updatedAt: string; +}; From 0a1f402242acc8fb8ae10ea9b3b019cdbe84e15d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=97=B0=EC=A7=84?= Date: Mon, 4 Aug 2025 02:59:25 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=EC=BF=BC=EB=A6=AC=ED=82=A4=20?= =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=EB=9F=AC=EB=A6=AC=20=EB=8F=84?= =?UTF-8?q?=EC=9E=85=20=EB=B0=8F=20=EC=A0=81=EC=9A=A9=20=EB=B0=8F=20?= =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/dateCourse/dateCourseSearchFilterOption.tsx | 5 +---- src/hooks/auth/useAuth.ts | 4 ---- src/hooks/course/useSearchRegion.tsx | 3 ++- src/queryKey/queryKey.ts | 5 +++++ yarn.lock | 2 +- 5 files changed, 9 insertions(+), 10 deletions(-) create mode 100644 src/queryKey/queryKey.ts diff --git a/src/components/dateCourse/dateCourseSearchFilterOption.tsx b/src/components/dateCourse/dateCourseSearchFilterOption.tsx index 4028b60..180a269 100644 --- a/src/components/dateCourse/dateCourseSearchFilterOption.tsx +++ b/src/components/dateCourse/dateCourseSearchFilterOption.tsx @@ -23,7 +23,6 @@ export default function DateCourseSearchFilterOption({ options, type, value, onC const [date, setDate] = useState(defaultDate); const [time, setTime] = useState(defaultTime); const [inputValue, setInputValue] = useState(''); - const [showSearchResults, setShowSearchResults] = useState(false); useEffect(() => { onChange(`${date} ${time}`); @@ -53,7 +52,6 @@ export default function DateCourseSearchFilterOption({ options, type, value, onC const keyword = inputValue.trim(); if (!keyword) return; refetch(); - setShowSearchResults(true); }; return ( @@ -95,7 +93,7 @@ export default function DateCourseSearchFilterOption({ options, type, value, onC onChange={handleInputChange} /> - {showSearchResults && regionList && regionList.result.regions.length > 0 && ( + {regionList && regionList.result.regions.length > 0 && (