기록하기

React Query와 SWR에 대하여 알아보자! 본문

기타

React Query와 SWR에 대하여 알아보자!

_parkdaxun 2023. 9. 23. 15:03

React Query

기능과 목적

데이터를 가져오고 관리하는데에 사용된다. Rest API, GraphQL

 

기능

쿼리 : 데이터를 가져오기 위한 쿼리 함수 정의, 실행

뮤테이션 : 데이터를 변경하는 뮤테이션 처리

인피니트 스크롤링 및 페이지네이션 지원

자동 캐싱 및 데이터 유효성 검사를 통한 최적화

에러 처리 및 재시도 메커니즘 내장

 

 

SWR

기능과 목적

주요 데이터 가져오기와 캐싱에 중점을 둔다. Rest API, GraphQL 또 다른 http 요청

 

기능

데이터 가져오기 및 캐싱 : http 요청을 통해 가져오고 자동으로 캐싱

데이터 구식 여부 확인 : 자동으로 업데이트함

 

 

기존 API fetching과 차이점

자동 캐싱 및 데이터 관리

React Query / SWR : 내부적으로 데이터 캐싱 및 관리, 캐시된 데이터 반환, 네트워크 요청 최소화

기존 API 호출 : 데이터 캐싱 및 상태 관리를 수동으로 해야함, 중복된 요청 발생, 데이터 관리 어려움

 

자동 에러처리 및 재시도

React Query / SWR : 자동으로 에러 처리, 재시도 메커니즘 제공, 서버 에러 처리하기 쉬움

기존 API 호출 : 에러처리와 재시도를 수동으로 구현, 코드 복잡, 예외 처리 놓치기 쉬움

 

상태관리 및 리렌더링

React Query / SWR : React 훅을 제공, 자동으로 컴포넌트 리렌더링함, UI 업데이트 쉬움

기존 API 호출 : UI 수동으로 업데이트

 

 

React Query / SWR 작동원리

데이터 요청

React Query : 데이터 가져오기 위해 ‘useQuery’ 훅 사용

SWR : ‘useSWR’ 훅 사용, 데이터를 가져오기 위한 url 또는 키와 함께 사용됨

 

캐싱

React Query : 요청한 데이터는 내부적으로 캐싱됨, 캐시는 메모리에 저장되어 빠르게 접근 가능

SWR : url 키를 기반으로 캐싱됨

 

데이터 유효성 검사

React Query : 데이터가 캐시된 상태에서 유효성 검사함, 데이터가 구식인 경우에만 서버로 요청 보냄

SWR : 데이터가 캐시된 상태에서 요청한 url로부터 데이터를 가져옴

 

 

React Query / SWR 사용 중인 회사들

토스

데이터를 가져오기 위해 토스 커뮤니티가 자주 사용하고 있는 라이브러리임

컴포넌트 단위로 비동기 리소스를 선언적으로 사용할 수 있게 해 주는 것이 특징!!

 

매드업

회사의 프로덕트 중 하나인 ‘레버’에서는 상태 관리를 위해 SWR을 사용중임