diff --git a/frontend/src/pages/pc/public/Schedule.jsx b/frontend/src/pages/pc/public/Schedule.jsx index 93b81ad..21de495 100644 --- a/frontend/src/pages/pc/public/Schedule.jsx +++ b/frontend/src/pages/pc/public/Schedule.jsx @@ -43,7 +43,7 @@ function Schedule() { const [searchInput, setSearchInput] = useState(''); const [searchTerm, setSearchTerm] = useState(''); const SEARCH_LIMIT = 20; // 페이지당 20개 - const ITEM_HEIGHT = 136; // 각 아이템 높이 (120px) + 간격 (16px) + const ESTIMATED_ITEM_HEIGHT = 120; // 아이템 추정 높이 (동적 측정) // Intersection Observer for infinite scroll const { ref: loadMoreRef, inView } = useInView({ @@ -289,11 +289,11 @@ function Schedule() { }); }, [schedules, selectedDate, currentYearMonth, selectedCategories, isSearchMode, searchTerm, searchResults]); - // 가상 스크롤 설정 (검색 모드에서만 활성화) + // 가상 스크롤 설정 (검색 모드에서만 활성화, 동적 높이 지원) const virtualizer = useVirtualizer({ count: isSearchMode && searchTerm ? filteredSchedules.length : 0, getScrollElement: () => scrollContainerRef.current, - estimateSize: () => ITEM_HEIGHT, + estimateSize: () => ESTIMATED_ITEM_HEIGHT, overscan: 5, // 버퍼 아이템 수 }); @@ -834,7 +834,7 @@ function Schedule() { <>