SWR 이라는 이름은 HTTP 캐시 무효 전략인 stale-while-revalidate에서 유래
SWR은 먼저 캐시로부터 데이터를 반환한 후, fetch 요청을하고, 최종적으로 데이터를 가져온는 전략이다.
// yarn으로 설치
yarn add swr
// npm으로 설치
npm i swr
import useSWR from 'swr';
const fetcher =
const Profile = () => {
// useSWR(key값, 패치(axios 또는 네이티브 fetch) 함수) => data와 error 반환
const { data, error } = useSWR('/api/test', fetcher);
if (error) return <div>failed to load</div>
if (!data) return <div>lading...</div>
return <div>data fetch test : {data}</div>
}
const { data, error, isValidating, mutate } = useSWR(key, fetcher, options)
// 조건부
const { data } = useSWR(shouldFetch ? '/api/data' : null, fetcher)
// falsy값 반환
const { data } = useSWR(() => shouldFecth ? '/api/data' : null, fetcher)
// 특정 데이터값이 존재하지 않을때 에러 반환
const { data } = useSWR(() => '/api/data?id=' + user.id, fetcher)
// carData는 userData에 의존적으로 데이터를 불러옴
const { userData } = useSWR('/api/user');
const { carData } = useSWR('/api/car?userId=' + userData.id);
// 아래 3가지 표현은 동일한 결과를 반환함
useSWR('/api/user', () => fetcher('/api/user'));
useSWR('/api/user', (url) => fetcher(url));
useSWR('/api/user', fetcher);
useSWR(['/api/user', token], (url, token) =. fetchWithToken(url, token));
useSWR(['/api/user', token], fetchWithToken);