• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    해결됨

[인피니트 스크롤링 강좌] prefetchInfiniteQuery에 전달되는 queryFn과 useInfiniteQuery에 전달되는 queryFn을 항상 똑같이 설정해야 되나요??

24.02.28 18:27 작성 24.02.28 18:29 수정 조회수 219

1

안녕하세요 !

강의를 보다가 궁금한 부분이 생겨서 질문 드립니다 !

 

  1. 상위 QueryProvider를 만들 때 ReactQueryStreamedHydration로 미리 감싸면 강의에서 소개 해준 dehydrate(queryClient)로 감싸는 작업을 하지 않아도 되나요? 

<QueryClientProvider client={client}>
      <ReactQueryStreamedHydration>{children}</ReactQueryStreamedHydration>
</QueryClientProvider>

 

dehydrate와 HydrateBoundary가 정확히 어떤 역활을 하는지 궁금합니다

const dehydratedState = dehydrate(queryClient);

  return (
    <HydrationBoundary state={dehydratedState}>
      <MoreListView keyword={keyword} />
    </HydrationBoundary>
  );

 

  1. prefetchInfiniteQuery의 queryFn과 useInfiniteQuery의 queryFn은 똑같이 작성해야 하나요??

만약 이렇게 하면 안된다면 전달하고자 하는 매개변수를 client component에서 전달하고자 할 때 어떻게 해야할 지 고민이 됩니다. (전달하는 상태 값은 useContext로 만든 상태 값입니다..)

// prefetch 부분
const queryClient = new QueryClient();
  await queryClient.prefetchInfiniteQuery({
    queryFn: fetchMoreList,
  });
// client component 부분
useInfiniteQuery<Dummy[], Object, InfiniteData<Dummy[]>, [_1: string, _2: string], number>({
      queryFn: ({ pageParam, queryKey }) => fetchMoreList({ pageParam, queryKey, sort }),
    });

답변 1

답변을 작성해보세요.

1

  1. HydrationBoundary를 대체할 수 있냐는 질문이신가요? 문서에 따르면 되는 것 같기는 합니다만 저는 experimental은 거의 쓰지 않습니다.

  2. 서로 달라도 됩니다. SSR + 쿠키 등의 이슈로 서버용 함수랑 클라용 함수가 다를 수밖에 없게 됩니다. 나중에 강의에서도 서로 다른 함수를 사용하게 됩니다.

ReKoding님의 프로필

ReKoding

질문자

2024.03.04

감사합니다 !! ㅎㅎ