useSWR

nevia·2024년 10월 24일

SWR(State While Revalidate)은 서버에서 데이터를 가져오는 데 사용되는 React 후크이다. useState와 useEffect를 사용하지 않고 실시간 데이터를 fetch, 캐싱 또는 re-fetch 할 수 있다. SWR은 캐시에서 데이터를 제공한 다음 검증을 위해 서버를 만들고 일단 완료되면 데이터 일관성을 위해 데이터를 결합한다.

예시

import useSWR from 'swr';

const fetcher = (url) => fetch(url).then((res) => res.json());

function SalesPage() {
  const { data, error, isLoading } = useSWR(
    'fetch data',
    fetcher
  );

  if (error) return <div>Failed to load sales data.</div>;
  if (isLoading) return <div>Loading sales data...</div>;

  return (
    <ul>
      {data.map((sale) => (
        <li key={sale.id}>
          {sale.username} - {sale.volume}
        </li>
      ))}
    </ul>
  );
}

useSWR은 내부적으로 상태 관리를 하기 때문에 useEffect와 같이 쓸 시 데이터가 변경되거나 새로 패칭되면 컴포넌트를 다시 렌더링한다.

  const { data, error } = useSWR(
    'fetch data',
    (url) => fetch(url).then((res) => res.json()),
  );

  useEffect(() => {
    if (data) {
      const transformedSales = [];
      for (const key in data) {
        transformedSales.push({
          id: key,
          username: data[key].username,
          volume: data[key].volume,
        });
      }
      setSales(transformedSales);
    }
  }, [data]);

0개의 댓글