사람들이 treatments 페이지를 자주 들어간다는 조사결과가 나왔고, 홈페이지가 처음 시작했을때 treatments 페이지는 prefetch해와서 사람들이 treatments페이지에 들어갔을때 로딩없이 바로 보여주고 싶다.

// useTretments.ts

export function usePrefetchTreatments(): void {
  const querClient = useQueryClient();
  querClient.prefetchQuery(queryKeys.treatments, getTreatments);
}

prefetch할 hook을 미리 선언해놓는다. useQueryClient 를 import 해와서 사용한다.

이제 Home 컴포넌트에서 이 prefetch Hook을 불러온다.

export function Home(): ReactElement {
  usePrefetchTreatments();

  return (
    <Stack align="center" justify="center" height="84vh">
      <BackgroundImage />
      <Text textAlign="center" fontFamily="Forum, sans-serif" fontSize="6em">
        <Icon m={4} verticalAlign="top" as={GiFlowerPot} />
        Lazy Days Spa
      </Text>
      <Text>Hours: limited</Text>
      <Text>Address: nearby</Text>
    </Stack>
  );

일단 Home컴포넌트에서 prefetch 하기로 결정한 이유는 일단 Home 컴포넌트는 리렌더링이 발생하지 않기때문에 저 usePrefetchTreatments Hook이 여러번 호출 되지 않을것이다.