|
1 |
| -'use client'; |
2 |
| - |
3 |
| -import { useEffect } from 'react'; |
4 |
| -import { useInView } from 'react-intersection-observer'; |
5 |
| -import { useInfiniteQuery } from '@tanstack/react-query'; |
6 | 1 | import getMyBoardList from '@/service/myPage';
|
7 | 2 | import { BookmarkedBoardList } from '@/types/types';
|
| 3 | +import useInfiniteScroll from '../common/useInfiniteScroll'; |
8 | 4 |
|
9 | 5 | 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 | + }); |
32 | 13 |
|
33 | 14 | return {
|
34 | 15 | Observer,
|
|
0 commit comments