From 99e3432a3ee834311f33ab3d525ec60ec35f65d3 Mon Sep 17 00:00:00 2001 From: jam-jang Date: Fri, 22 Aug 2025 08:19:17 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8A=AC=EB=9D=BC=EC=9D=B4=EB=8D=94=20?= =?UTF-8?q?=ED=81=B4=EB=A6=AD=20=EC=8B=9C=20'interest'=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=20+=20'category'=20=EB=8F=99=EA=B8=B0=ED=99=94?= =?UTF-8?q?=EB=A1=9C=20=EC=98=AC=EB=B0=94=EB=A5=B8=20=ED=95=84=ED=84=B0=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Explore-Page/explore-page.tsx | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/pages/Explore-Page/explore-page.tsx b/src/pages/Explore-Page/explore-page.tsx index d2f7cb1..5424805 100644 --- a/src/pages/Explore-Page/explore-page.tsx +++ b/src/pages/Explore-Page/explore-page.tsx @@ -49,7 +49,6 @@ const reverseInterestMap = Object.entries(interestMap).reduce((acc, [label, key] const PAGE_SIZE = 10; export default function ExplorePage() { - const [searchParams, setSearchParams] = useSearchParams(); const { setHideNav } = useNav(); @@ -73,7 +72,7 @@ export default function ExplorePage() { const [colleges, setColleges] = useState<{ id: number; name: string }[]>([]); const [profiles, setProfiles] = useState([]); - // 무한스크롤용 상태 + // 무한스크롤 상태 const [page, setPage] = useState(0); const [hasNextPage, setHasNextPage] = useState(true); const [isFetching, setIsFetching] = useState(false); @@ -81,7 +80,7 @@ export default function ExplorePage() { const { ref, inView } = useInView({ threshold: 0 }); - + // 쿼리 변경 시 상태 동기화 (interest 우선) useEffect(() => { const interestQ = searchParams.get('interest'); const categoryQ = searchParams.get('category'); @@ -105,12 +104,13 @@ export default function ExplorePage() { setHideNav(showDeptModal || showYearModal); }, [showDeptModal, showYearModal, setHideNav]); + const applyCategory = useCallback( (label: string) => { setSelectedCategory(label); const next = new URLSearchParams(searchParams); - next.delete('interest'); + next.delete('interest'); if (label && label !== '전체') next.set('category', label); else next.delete('category'); @@ -119,6 +119,7 @@ export default function ExplorePage() { [searchParams, setSearchParams] ); + // 공통 파라미터 (interest 쿼리가 있으면 최우선) const buildParams = useCallback( (p: number): MemberFilterParams => { const interestKey = searchParams.get('interest') || interestMap[selectedCategory]; @@ -138,7 +139,7 @@ export default function ExplorePage() { [searchParams, selectedCategory, sortOrder, selectedCollegeId, selectedMajor, selectedYear] ); - // 페이지 로드 함수 + // 페이지 로드 const loadPage = useCallback( async (p: number, append: boolean) => { setIsFetching(true); @@ -220,10 +221,10 @@ export default function ExplorePage() {
- {/* 하단 로딩 스피너 (다음 페이지 로딩 중) */} {isFetching && hasNextPage && (
)} - {/* 무한스크롤 센티넬 */}
) : (