[NextJS] SWR & React Suspense

안승찬·2024년 3월 26일

Next

목록 보기
2/4

본 게시물은 SWR Suspense 설정에 관한 것을 담고 있습니다.

ex)

import useSWR from "swr";

const PostTitle = () => {
    const { data } = useSWR(`/api/post/${id}`);
	return {data ? data?.post?.title ? : "Loading..."}
}

const Page = () => {
 return <div><PostTitle /></div>
}

보통 Loading 매개변수나 삼항 연산자를 통해서 로딩과정을 처리합니다.

Suspense를 활용하면 삼항 연산자 없이 위와같은 효과를 나타낼 수 있습니다.

import useSWR, { SWRConfig } from "swr";

const Page = () => {
 return <SWRConfig value={{ suspense: true }} ><PostTitle /></SWRConfig>
}

SWRConfig 에서 suspense:true 설정만 해주면 끝입니다.
그후 Suspense를 사용하는 컴포넌트를 감싸주기만 하면 됩니다.
그 다음 Suspense 컴포넌트의 fallback prop로 컴포넌트가 로딩중일때 보여줄 요소를 입력해주면 됩니다.

import useSWR, { SWRConfig } from "swr";
import { Suspense } from "react";

const PostTitle = () => {
    const { data } = useSWR(`/api/post/${id}`);
	return data?.post?.title
}

const Page = () => {
 return <SWRConfig value={{ suspense: true }} >
   <Suspense fallback="Loading...">
   	<PostTitle />
   </Suspense>
</SWRConfig>
}

위는 SWR 예제이고 React-query 또한 로직은 동일합니다.

0개의 댓글