[React] SWR의 개념 알아보기

2023. 3. 19. 17:37·React
목차
  1. 개념
  2. 장점
  3. 주의할 점
  4. npm trends 비교
  5. SWR 사용하기
  6. 🔗 참고
728x90
반응형

개념

SWR은 vercel에서 제작한 모듈이며, 데이터를 가져올 때 쓰인다.

vercel의 SWR 공식문서 "SWR"이라는 이름은 HTTP RFC 5861(opens in a new tab)에 의해 알려진 HTTP 캐시 무효 전략인 stale-while-revalidate에서 유래되었습니다. SWR은 먼저 캐시(스태일)로부터 데이터를 반환한 후, fetch 요청(재검증)을 하고, 최종적으로 최신화된 데이터를 가져오는 전략입니다.

SWR을 사용하면 컴포넌트는 지속적이며 자동으로 데이터 업데이트 스트림을 받게 됩니다.그리고 UI는 항상 빠르고 반응적입니다.

장점

단 한 줄의 코드로 프로젝트 내의 데이터 가져오기 로직을 단순화할 수 있다.

  • 빠르고, 가볍고, 재사용 가능한 데이터 가져오기
  • 내장된 캐시 및 요청 중복 제거
  • 실시간 경험

SWR은 더 나은 경험을 구축할 수 있도록 속도, 정확성, 안정성의 모든 측면을 다룹니다.

  • 빠른 페이지 네비게이션
  • 인터벌 폴링
  • 데이터 의존성

주의할 점

useSWR 자체로 useEffect처럼 동작하기 때문에 useEffect 하위에서는 사용할 수 없다.

npm trends 비교

2020년부터 React Query 나 SWR 와 같은 data fetching 라이브러리들이 인기를 끌고 있다. (risingstars)

swr은 react-query와 기능이 비슷하여 많이 비교된다. 그런데 각각의 장점이 있기 때문에 개인의 선호도에 따라 선택하여 사용하면 될듯하다.

npm trends
npm trends에 나온 react-query와 swr 비교

반응형

→ 데이터를 가져와서 쓰인 것 중 axios가 존재한다. axios는 필요할 때마다 api를 호출해야 데이터가 갱신되었다. SWR은 포커싱을 다른 곳으로 옮겼다가 돌아오기만해도 자동으로 재검증을 통해 업데이트를 해준다는 장점이 있다.

 

SWR 사용하기

import useSWR from 'swr'
 
function Profile() {
  const { data, error, isLoading } = useSWR('/api/user', fetcher)
 
  if (error) return <div>failed to load</div>
  if (isLoading) return <div>loading...</div>
  return <div>hello {data.name}!</div>
}

useSWR hook은 key 문자열과 fetcher 함수를 받는다.

const { data, error } = useSWR(key, fetcher);
const fetcher = (...args) => fetch(...args).then(res => res.json());
  • key : 데이터의 고유한 식별이며(일반적으로 요청을 보낼 API URL), fetcher로 전달된다.
  • fetcher : 데이터를 반환하는 어떠한 비동기 함수된다. 네이티브 fetch 또는 Axios와 같은 도구를 사용할 수 있다.

요청의 상태에 기반한 data와 error를 반환하게 된다.

  • data : 요청에 오류가 없는 경우 가져온 데이터를 말한다.
  • error : 요청에 오류가 있을시에 반환할 내용을 의미한다. fetch 프로미스가 거부될 때 정의되게 된다.

🔗 참고

https://swr.vercel.app/ko

https://fe-developers.kakaoent.com/2022/220224-data-fetching-libs/

https://velog.io/@soryeongk/ReactSWRTutorial

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)
  1. 개념
  2. 장점
  3. 주의할 점
  4. npm trends 비교
  5. SWR 사용하기
  6. 🔗 참고
'React' 카테고리의 다른 글
  • [React] 콘솔에 코드 출력시 두개의 콘솔 뜰 때 해결
  • [React] SWR을 활용하기
  • [React] Redux(리덕스)란 무엇인가?
  • [React] useReducer 개념 살펴보기
Uheeking
Uheeking
안녕하세요. react, flutter, node.js에 관련해서 글을 쓰는 블로그입니다.
Uheeking의 it로그안녕하세요. react, flutter, node.js에 관련해서 글을 쓰는 블로그입니다.
Uheeking
Uheeking의 it로그
Uheeking
전체
오늘
어제

공지사항

  • 분류 전체보기 (254)
    • React (48)
    • Node.js (32)
    • Next.js (22)
    • Vue.js (15)
    • javascript (3)
    • Django (19)
    • etc (23)
    • Flutter (30)
    • Error (16)
    • AWS (11)
    • docker & Kubernetes (32)
    • git (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
250x250

인기 글

태그

  • MySQL
  • AWS
  • 플러터
  • sequelize
  • supabase
  • 장고
  • Express
  • 쿠버네티스
  • Create
  • NEXT
  • 티스토리챌린지
  • React
  • SSR
  • mosquitto
  • next.js
  • Django
  • docker
  • firebase
  • Props
  • error
  • Vue.js
  • flutter
  • node.js
  • 도커
  • 노드
  • 오블완
  • useEffect
  • 넥스트
  • Kubernetes
  • 리액트

최근 댓글

최근 글

250x250
hELLO· Designed By정상우.v4.5.2
Uheeking
[React] SWR의 개념 알아보기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.