Skip to content

Commit 8bcb5d7

Browse files
committed
Refactor: 무한 스크롤 리팩토링 나머지 #65
1 parent be00ae8 commit 8bcb5d7

File tree

3 files changed

+10
-29
lines changed

3 files changed

+10
-29
lines changed

hooks/common/useInfiniteScroll.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
'use client';
2+
13
import { useInfiniteQuery } from '@tanstack/react-query';
24
import { useEffect } from 'react';
35
import { useInView } from 'react-intersection-observer';

hooks/queries/useGetMyBoardList.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
'use client';
2-
31
import getMyBoardList from '@/service/myPage';
42
import { MyBoardList } from '@/types/types';
53
import useInfiniteScroll from '../common/useInfiniteScroll';

hooks/queries/useGetMyBookmarkedBoardList.tsx

+8-27
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,15 @@
1-
'use client';
2-
3-
import { useEffect } from 'react';
4-
import { useInView } from 'react-intersection-observer';
5-
import { useInfiniteQuery } from '@tanstack/react-query';
61
import getMyBoardList from '@/service/myPage';
72
import { BookmarkedBoardList } from '@/types/types';
3+
import useInfiniteScroll from '../common/useInfiniteScroll';
84

95
export default function useGetBookmarkedBoardList() {
10-
const { data, fetchNextPage, isLoading, hasNextPage, isFetchingNextPage } =
11-
useInfiniteQuery({
12-
queryKey: ['bookmarkedBoards'],
13-
queryFn: ({ pageParam = 0 }): Promise<BookmarkedBoardList> =>
14-
getMyBoardList(pageParam),
15-
getNextPageParam: (boardlist) =>
16-
boardlist.last ? undefined : boardlist.number + 1,
17-
});
18-
19-
// 무한 스크롤 화면 가장 아래 부분 탐지하는 observer
20-
function Observer({ children }: { children: React.ReactNode }) {
21-
const { ref, inView } = useInView({ threshold: 1 });
22-
useEffect(() => {
23-
if (inView && hasNextPage) {
24-
fetchNextPage();
25-
}
26-
}, [inView]);
27-
if (!hasNextPage || !data) return null;
28-
return (
29-
<div ref={ref}>{isLoading || isFetchingNextPage ? children : null}</div>
30-
);
31-
}
6+
const { data, isLoading, Observer } = useInfiniteScroll<BookmarkedBoardList>({
7+
queryKey: 'myBookmarkedBoards',
8+
firstPageParam: 0,
9+
queryFn: getMyBoardList,
10+
getNextPageParamFn: (boardlist) =>
11+
boardlist.last ? undefined : boardlist.number + 1,
12+
});
3213

3314
return {
3415
Observer,

0 commit comments

Comments
 (0)