Published on

React Query의 infinite query 사용하기

react query 에서 지원하는 infinite query 사용방법에 대한 정리

자세한 사용방법은 다음 가이드를 참고한다.
https://react-query.tanstack.com/reference/useInfiniteQuery

async function getCharacters(page) {
  const response = await fetch(`https://test/api/character?page=${page}`);
  const characters = await response.json();
  return characters;
}

const { data, fetchNextPage, hasNextPage, isLoading } = useInfiniteQuery(
  ['GetCharactersKeyQuery'],
  ({ pageParam = 1 }) => getCharacters(pageParam),
  {
    getNextPageParam: (lastPage) => {
      if (lastPage.projects.pageInfo.hasNextPage) {
        return lastPage.projects.pageInfo.endCursor;
      }
      // return undefined means no next page
      return undefined;
    },
  }
);

const handleEndReached = () => {
  fetchNextPage();
};
  • getNextPageParam(옵션) : Query 결과로 받은 lastPage를 전달받아서, next page param을 return 한다. undefined이면 next page가 없다는 의미.
  • hasNextPage(리턴) : next page가 존재하는지 유무. getNextPageParam 을 통해 결정된다.