fix(Schedule): 무한 스크롤 중복 요청 방지
- inView가 false→true로 변경될 때만 fetchNextPage 실행 - prevInViewRef를 사용하여 이전 상태 추적 - PC 일정, Admin 일정 페이지 모두 적용
This commit is contained in:
parent
043925dcb2
commit
3d2a6555f8
2 changed files with 10 additions and 2 deletions
|
|
@ -202,10 +202,14 @@ function AdminSchedule() {
|
||||||
const searchTotal = searchData?.pages?.[0]?.total || 0;
|
const searchTotal = searchData?.pages?.[0]?.total || 0;
|
||||||
|
|
||||||
// Auto fetch next page when scrolled to bottom
|
// Auto fetch next page when scrolled to bottom
|
||||||
|
// inView가 true로 변경될 때만 fetch (중복 요청 방지)
|
||||||
|
const prevInViewRef = useRef(false);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (inView && hasNextPage && !isFetchingNextPage && isSearchMode && searchTerm) {
|
// inView가 false→true로 변경될 때만 fetch
|
||||||
|
if (inView && !prevInViewRef.current && hasNextPage && !isFetchingNextPage && isSearchMode && searchTerm) {
|
||||||
fetchNextPage();
|
fetchNextPage();
|
||||||
}
|
}
|
||||||
|
prevInViewRef.current = inView;
|
||||||
}, [inView, hasNextPage, isFetchingNextPage, fetchNextPage, isSearchMode, searchTerm]);
|
}, [inView, hasNextPage, isFetchingNextPage, fetchNextPage, isSearchMode, searchTerm]);
|
||||||
|
|
||||||
// selectedDate가 없으면 오늘 날짜로 초기화
|
// selectedDate가 없으면 오늘 날짜로 초기화
|
||||||
|
|
|
||||||
|
|
@ -92,10 +92,14 @@ function Schedule() {
|
||||||
|
|
||||||
|
|
||||||
// Auto fetch next page when scrolled to bottom
|
// Auto fetch next page when scrolled to bottom
|
||||||
|
// inView가 true로 변경될 때만 fetch (중복 요청 방지)
|
||||||
|
const prevInViewRef = useRef(false);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (inView && hasNextPage && !isFetchingNextPage && isSearchMode && searchTerm) {
|
// inView가 false→true로 변경될 때만 fetch
|
||||||
|
if (inView && !prevInViewRef.current && hasNextPage && !isFetchingNextPage && isSearchMode && searchTerm) {
|
||||||
fetchNextPage();
|
fetchNextPage();
|
||||||
}
|
}
|
||||||
|
prevInViewRef.current = inView;
|
||||||
}, [inView, hasNextPage, isFetchingNextPage, fetchNextPage, isSearchMode, searchTerm]);
|
}, [inView, hasNextPage, isFetchingNextPage, fetchNextPage, isSearchMode, searchTerm]);
|
||||||
|
|
||||||
// 데이터 로드
|
// 데이터 로드
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue