기존 상태 관리 라이브러리 문제점
1. 서버에서 fetching 해온 데이터의 경우 시간이 지날수록 일관성이 깨짐
2. 데이터를 최신으로 유지하기 위해 주기적으로 호출해야함
3. 이로 인해 추가적인 많은 코드작성이 필요함
4. 비동기적 데이터 fetching을 위해 미들웨어의 사용 필수
SWR의 장점
1. 빠르고, 가볍고, 재사용 가능한 데이터를 가져올 수 있음
2. 최초 데이터를 수집 후 캐시된 데이터를 이용하여 효율적인 동작을 만들어냄
3. 스마트한 에러 재시도
4. 포커싱 시 갱신
5. 소켓을 사용하지 않고도 주기적인 동기화 가능
6. Redux의 복잡한 Boilerplate 보다 훨씬 간결한 코드
Local State: 리액트 컴포넌트 안에서만 사용되는 state
React State
Global State: Global Store에 정의되어 어디에서나 접근 가능한 state
Server State: 서버로부터 받아오는 state
SWR Server State
useSWR hook은 3개의 인자를 받을수 있음
Key : 요청을 위한 고유한 키 문자열 (fetcher 함수의 파라미터로 전달)
Fetcher : 데이터를 가져오기 위한 함수를 반환하는 Promise
Options: SWR hook을 위한 옵션 객체