프론트엔드/Next.js

useSWR(CSR) 사용하기

카엔입니다 2022. 1. 16. 18:18

useSWR

Data Feching 라이브러리로써 배워볼 기회가 생겨 사용법을 작성합니다
SWR는 데이터를 가져오는데 특화되어 있는 라이브러리이며 axios를 대체할 수도 없고 useEffect안에서 사용할 수 없기에 막 사용하기도 힘듭니다(사실 그냥 쓰기만 해도 useEffect처럼 동작합니다)
결국 axios를 버리고 SWR만 사용할 순 없지만 충분히 매력적이고 좋은 기능이 많은 라이브러리라고 생각됩니다

기능

SWR 함수는 2개의 인자를 필수적으로 받습니다

  • 화면에 포커싱이 되면 자동으로 SWR이 Data Fetch를 해서 실시간으로 변화시켜줍니다

  • 주기적인 호출가능

    • 위처럼 포커싱 됬을때 데이터 갱신이 되긴하지만 설정에 따라 원하는 순간에 revalidate할 수도 일정 시간 간격으로 revalidate할 수도 있습니다

      import useSWR from 'swr';
      import fetch from '../libs/fetch';
      
      export default function myApp() {
        const { data, revalidate } = useSWR('/api/test', fetch, {
              refreshInterval: 1000 // 1초마다 갱신
        });
      
        return ( ... )
      }
  • 오류 발생시 Error에 대해 반환하여 예외 처리가 가능합니다

  • 캐시된 데이터를 이용합니다
    최초에 데이터를 수집한 후 캐시된 데이터를 통해 자동적으로 revalidate해서 데이터의 상태를 유지해줍니다

문법

useSWR(key, fetcher, option)

key: fetcher에게 전달되는 인자로써 URL이 주로 사용됨
fetcher: 데이터를 fetch하는 함수 주로 axios가 사용됨
option: revalidate, mutate, initialData 등이 사용됨

*잘못된 내용은 댓글로 알려주세요!