6. 기존 상태 관리 라이브러리 문제점
1. 서버에서 fetching 해온 데이터의 경우 시간이 지날수록 일관성이 깨짐
2. 데이터를 최신으로 유지하기 위해 주기적으로 호출해야함
3. 이로 인해 추가적인 많은 코드작성이 필요함
4. 비동기적 데이터 fetching을 위해 미들웨어의 사용 필수
7. SWR의 장점
1. 빠르고, 가볍고, 재사용 가능한 데이터를 가져올 수 있음
2. 최초 데이터를 수집 후 캐시된 데이터를 이용하여 효율적인 동작을 만들어냄
3. 스마트한 에러 재시도
4. 포커싱 시 갱신
5. 소켓을 사용하지 않고도 주기적인 동기화 가능
6. Redux의 복잡한 Boilerplate 보다 훨씬 간결한 코드
8. Local State: 리액트 컴포넌트 안에서만 사용되는 state
React State
Global State: Global Store에 정의되어 어디에서나 접근 가능한 state
Server State: 서버로부터 받아오는 state
13. SWR Server State
useSWR hook은 3개의 인자를 받을수 있음
Key : 요청을 위한 고유한 키 문자열 (fetcher 함수의 파라미터로 전달)
Fetcher : 데이터를 가져오기 위한 함수를 반환하는 Promise
Options: SWR hook을 위한 옵션 객체
15. SWR preload
캐싱 된 데이터가 있을 때
불필요한 요청 제거
굳이 재 요청 해서 받아 올 필요 없이
cacheKey를 이용하여 데이터 사용
16. 유저가 서버에서 온 데이터를 로컬에서 수정 했을 때
1. 서버에 업데이트 요청을 보냄
2. 요청이 성공하거나, 실패하거나 기다림
3. 요청이 완료되면 화면에 업데이트된 UI를 나타냄
업데이트의 시간이 오래 걸리면 유저는 기다려야하는 문제점
17. 낙관적인 UI
1. 로컬에서 데이터를 업데이트 시키고, 반영된 UI를 즉시 나타냄
2. 서버에 업데이트 요청을 보냄
3. 요청이 끝날 때 까지 기다림
4. 요청이 완료되면 서버 데이터와 로컬 데이터가 일치됨
유저의 눈에는 업데이트한 데이터가 즉시 반영된 것 처럼 보임
18. 참고자료
useSWR 옵션 Link : https://swr.vercel.app/ko/docs/api
https://fe-developers.kakaoent.com/2022/220224-data-fetching-libs/
https://steadily-worked.tistory.com/565