diff --git a/apps/web/src/app/search/PopularSearchHistory.tsx b/apps/web/src/app/search/PopularSearchHistory.tsx index 2752480..d593682 100644 --- a/apps/web/src/app/search/PopularSearchHistory.tsx +++ b/apps/web/src/app/search/PopularSearchHistory.tsx @@ -1,6 +1,6 @@ 'use client'; -import { ChartNoAxesCombined } from 'lucide-react'; +import { ChartNoAxesCombined, Loader2 } from 'lucide-react'; import { useSearchLogQuery } from '@/queries/searchLogQuery'; @@ -9,33 +9,36 @@ interface PopularSearchHistoryProps { } export default function PopularSearchHistory({ onHistoryClick }: PopularSearchHistoryProps) { - const { data: searchLogs } = useSearchLogQuery(); - - if (!searchLogs || searchLogs.length === 0) return null; + const { data: searchLogs, isPending } = useSearchLogQuery(); return ( -
+

인기 검색어

-
- {searchLogs.slice(0, 10).map((log, index) => ( -
- {index + 1} - onHistoryClick(log.text)} + {isPending ? ( +
+ +
+ ) : ( +
+ {searchLogs?.slice(0, 10).map((log, index) => ( +
- {log.text} - - {log.count} -
- ))} -
+ onHistoryClick(log.text)} + > + {log.text} + + {log.count} +
+ ))} +
+ )}
); } diff --git a/apps/web/src/app/search/SearchHistory.tsx b/apps/web/src/app/search/SearchHistory.tsx index bc72ec2..5e3091d 100644 --- a/apps/web/src/app/search/SearchHistory.tsx +++ b/apps/web/src/app/search/SearchHistory.tsx @@ -1,4 +1,5 @@ -import { Clock, X } from 'lucide-react'; +import { Clock, Loader2, X } from 'lucide-react'; +import { useEffect, useState } from 'react'; import useSearchHistoryStore from '@/stores/useSearchHistoryStore'; @@ -8,37 +9,48 @@ interface SearchHistoryProps { export default function SearchHistory({ onHistoryClick }: SearchHistoryProps) { const { searchHistory, removeFromHistory } = useSearchHistoryStore(); + const [isHydrated, setIsHydrated] = useState(false); - if (searchHistory.length === 0) return null; + useEffect(() => { + if (searchHistory.length > 0) { + setIsHydrated(true); + } + }, [searchHistory]); return ( -
+

최근 검색어

-
- {searchHistory.slice(10).map((term, index) => ( -
- onHistoryClick(term)} + {!isHydrated ? ( +
+ +
+ ) : ( +
+ {searchHistory.slice(0, 10).map((term, index) => ( +
- {term} - - removeFromHistory(term)} - title="검색 기록 삭제" - > - - -
- ))} -
+ onHistoryClick(term)} + > + {term} + + removeFromHistory(term)} + title="검색 기록 삭제" + > + + +
+ ))} +
+ )}
); }