0Pricing
React Academy · 강의

useSWR 훅: 가져오기, 로딩, 오류 상태

사용자 지정 가져오기 함수와 함께 useSWR을 사용하고 로딩, 오류, 성공 상태를 선언적으로 처리합니다.

useSWR 훅: 가져오기, 로딩, 오류 상태은(는) CoddyKit의 무료 React Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 React Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

useSWR 시그니처

useSWR(key, fetcher, options)는 기본 훅입니다. key는 캐시 키(일반적으로 URL 문자열)이고, fetcher는 데이터를 반환하는 비동기 함수이며, options는 선택적인 구성 객체입니다.

이 훅은 data, error, isLoading, isValidating 및 mutate 함수를 포함하는 객체를 반환합니다.

key 매개변수

key는 문자열 URL, [url, params] 배열 또는 null일 수 있습니다. 문자열 키는 단순한 GET 요청에 매핑됩니다. 배열 키를 사용하면 userId나 필터 같은 변수를 캐시 식별자에 포함할 수 있습니다.

null을 전달하면 요청이 완전히 비활성화되므로, 필요한 데이터를 아직 사용할 수 없을 때 조건부로 데이터를 가져오는 데 유용합니다.

데이터 가져오기 함수

데이터 가져오기 함수는 키(또는 배열 키를 펼친 인수)를 받고 Promise를 반환해야 합니다. Promise가 해결된 값이 data가 됩니다. 데이터 가져오기 함수에서 예외가 발생하면 error 속성이 설정됩니다.

예: (url) => fetch(url).then(r => { if (!r.ok) throw new Error(r.status); return r.json(); }).

data 및 error 상태

처음 로딩하는 동안 data는 undefined이며, 성공하면 데이터 가져오기 함수가 반환한 값이 됩니다. 데이터 가져오기 함수에서 예외가 발생하지 않는 한 error는 undefined이고, 예외가 발생하면 발생한 오류 객체를 담습니다.

오류 메시지를 렌더링하려면 if (error)를 확인하고, 명확한 대체 UI를 제공하면서 로딩 스켈레톤을 렌더링하려면 if (!data)를 확인합니다.

isLoading과 isValidating 비교

isLoading은 캐시된 데이터가 없고 요청이 진행 중일 때, 즉 이 키를 처음 로드할 때만 true입니다. isValidating은 요청이 진행 중인 동안 언제나 true이며, 캐시된 데이터가 이미 있는 상태에서 백그라운드 재검증을 수행할 때도 true입니다.

스켈레톤 화면에는 isLoading을 사용하고, 백그라운드 새로 고침을 나타내는 은은한 스피너에는 isValidating을 사용합니다.

전역 SWRConfig

SWRConfig을 사용하면 하위 트리의 모든 useSWR 호출에 적용할 기본 데이터 가져오기 함수, dedupingInterval, refreshInterval, onError 처리기 및 기타 옵션을 정의할 수 있습니다. 훅마다 옵션을 반복하는 대신 구성을 중앙에서 관리할 수 있습니다.

SWRConfig 공급자를 여러 개 중첩하면 앱의 서로 다른 영역에 서로 다른 기본값을 적용할 수 있습니다.

null 키를 사용한 조건부 데이터 가져오기

요청을 건너뛰려면 키로 null을 전달합니다: useSWR(isLoggedIn ? '/api/user' : null, fetcher). 키가 null이 아닌 값이 될 때까지 SWR은 데이터를 가져오지 않습니다.

이는 React Query의 skip 옵션보다 깔끔합니다. 키가 null에서 문자열로 바뀌면 첫 번째 가져오기가 자동으로 실행됩니다.

종속 데이터 가져오기

종속된 요청에는 SWR 훅을 연결해 사용합니다: const { data: user } = useSWR('/api/me', fetcher) 다음에 const { data: orders } = useSWR(user ? '/api/orders/' + user.id : null, fetcher)를 호출합니다. 두 번째 훅은 첫 번째 훅이 해결될 때까지 기다립니다.

이 패턴은 useEffect를 연쇄적으로 사용하는 방식을 피하고 데이터 의존성을 선언적이고 읽기 쉽게 유지합니다.

요청 중복 제거의 실제 동작

Header 컴포넌트와 Sidebar 컴포넌트가 모두 useSWR('/api/user', fetcher)를 호출하면 SWR은 요청을 하나만 전송하고 결과를 공유합니다. 데이터나 오류가 업데이트되면 두 컴포넌트가 함께 다시 렌더링됩니다.

이 중복 제거는 추가 구성 없이 dedupingInterval 기간(기본값 2000ms) 내에서 자동으로 이루어집니다.

유용한 SWR 옵션

refreshInterval: 5000은 5초마다 폴링합니다. refreshWhenHidden: false는 탭이 표시되지 않을 때 폴링을 중지합니다. shouldRetryOnError: false는 자동 재시도를 비활성화합니다. revalidateOnFocus: false는 포커스에 의해 실행되는 재검증을 비활성화합니다.

데이터 최신성 요구 사항에 맞게 옵션을 조합합니다. 대시보드에는 refreshInterval을 자주 사용하고, 정적 콘텐츠에는 revalidateOnFocus: false를 설정하는 경우가 많습니다.

useSWR을 사용한 페이지 매김

페이지로 나뉜 데이터에는 키에 페이지 번호를 포함합니다: useSWR(['/api/items', page], fetcher). 페이지를 변경하면 해당 페이지의 데이터를 새로 가져오면서 이전 페이지는 캐시합니다.

SWR은 커서 기반 패턴이나 무한 스크롤 패턴을 위한 useSWRInfinite도 제공합니다. 이때 getKey 함수가 페이지 인덱스와 이전 페이지 데이터를 바탕으로 키를 만듭니다.

null인 SWR 키

useSWR에 키로 null을 전달하면 어떻게 됩니까?

레슨 요약

useSWR(key, fetcher)는 data, error, isLoading, isValidating을 반환합니다. null 키는 조건부 요청과 종속 요청에서 데이터 가져오기를 비활성화합니다. isLoading은 첫 번째 로딩을 나타내고 isValidating은 진행 중인 모든 요청을 나타냅니다. SWRConfig은 기본값을 중앙에서 관리하며 컴포넌트 간 요청 중복 제거는 자동으로 이루어집니다.

refreshInterval, revalidateOnFocus, shouldRetryOnError 같은 옵션을 사용하면 훅별 또는 전역 데이터 최신성 동작을 세밀하게 조정할 수 있습니다.

자주 묻는 질문

“useSWR 훅: 가져오기, 로딩, 오류 상태” 강의는 무료인가요?

네 — “useSWR 훅: 가져오기, 로딩, 오류 상태” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 React Academy 강의 전체를 잠금 해제할 수 있습니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“useSWR 훅: 가져오기, 로딩, 오류 상태”에서 뭘 배우나요?

사용자 지정 가져오기 함수와 함께 useSWR을 사용하고 로딩, 오류, 성공 상태를 선언적으로 처리합니다. 브라우저에서 직접 실행하는 실습 코드로 React Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

React Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 React Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“useSWR 훅: 가져오기, 로딩, 오류 상태” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 React Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 React Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. SWR 핵심 개념: 오래된 데이터 우선 재검증
  2. useSWR 훅: 가져오기, 로딩, 오류 상태
  3. SWR을 사용한 변경과 낙관적 업데이트
  4. SWR과 React Query 비교: 적합한 도구 선택
← React Academy(으)로 돌아가기