@@ -4,6 +4,7 @@ import { useEffect } from 'react';
4
4
import { useInView } from 'react-intersection-observer' ;
5
5
import { useInfiniteQuery } from '@tanstack/react-query' ;
6
6
import getBoardList from '@/service/board' ;
7
+ import { BoardList } from '@/types/types' ;
7
8
8
9
interface InfiniteScrollProps {
9
10
infiniteQueryKey : string [ ] ;
@@ -16,15 +17,14 @@ export default function useGetBoardList({
16
17
infiniteQueryKey,
17
18
pageParameter = 1 ,
18
19
pageSize = 5 ,
19
- inViewThreshold = 1 ,
20
20
} : InfiniteScrollProps ) {
21
21
const { data, fetchNextPage, isLoading, hasNextPage, isFetchingNextPage } =
22
22
useInfiniteQuery ( {
23
23
queryKey : infiniteQueryKey ,
24
- queryFn : ( { pageParam = pageParameter } ) =>
24
+ queryFn : ( { pageParam = pageParameter } ) : Promise < BoardList > =>
25
25
getBoardList ( { pageParam, pageSize } ) ,
26
- getNextPageParam : ( lastPage , allPages ) =>
27
- allPages . length < 20 ? allPages . length + 1 : undefined ,
26
+ getNextPageParam : ( boardlist ) =>
27
+ boardlist . last ? undefined : boardlist . number + 1 ,
28
28
select : ( d ) => ( {
29
29
pages : d . pages . flatMap ( ( page ) => page ) ,
30
30
pageParams : d . pageParams ,
@@ -33,7 +33,7 @@ export default function useGetBoardList({
33
33
34
34
// 무한 스크롤 화면 가장 아래 부분 탐지하는 observer
35
35
function Observer ( { children } : { children : React . ReactNode } ) {
36
- const { ref, inView } = useInView ( { threshold : inViewThreshold } ) ;
36
+ const { ref, inView } = useInView ( { threshold : 1 } ) ;
37
37
38
38
useEffect ( ( ) => {
39
39
if ( inView && hasNextPage ) {
@@ -50,5 +50,6 @@ export default function useGetBoardList({
50
50
return {
51
51
Observer,
52
52
data,
53
+ isLoading,
53
54
} ;
54
55
}
0 commit comments