-
redux로 fetch했었음.
-
스토어가 전역 상태의 관리보다는 점점 API 통신 코드로 변화해감.
-
여기서 다 관리하는게 맞나? 라는 의문을 가지게 됨
- API 통신 관련 코드가 모두 Store에?
- 상태마다 반복되는 isFetching, isError 등 API 관련 상태가 반복됨.
- 이렇게 반복되는 비슷한 구조의 API 통신 코드
-
서버에서 받아야하는 상태들의 특성에 대해 분석해봄
- 클라이언트에서 제어하거나 소유되지 않은 원격의 공간에서 관리되고 유지되는 것
- fetching이나 updating에 비동기 api가 필요한 것
- 다른 사람들과 공유되는 것으로, 사용자가 모르는 사이에 변경될 수 있는 것
- 신경 쓰지 않는다면, 잠재적으로 out of date가 될 가능성이 있는 것
- 다른 시각으로 보면 state들이 일종의 ‘캐시’라고 생각해볼 수 있다. 암튼.
-
상태는 이제 2개로 나눌 수 있다.
- Client State
- Client에서 소유하며 온전히 제어가능하다.
- 초기값 설정이나 조작에 제약사항이 없다.
- 다른 사람들과 공유되지 않으며, Client 내에서 UI/UX 흐름이나 사용자 인터렉션에 따라 변할 수 있다.
- 항상 Client 내에서 최신 상태로 관리된다.
- Ownership이 Client에 있다.
- Server State
- Client에서 제어하거나 소유되지 않은 원격의 공간에서 관리되고 유지된다.
- Fetching/Updating에 비동기 API가 필요하다.
- 다른 사람들과 공유되는 것으로 사용자가 모르는 사이에 변경될 수 있다.
- 신경 쓰지 않는다면 잠재적으로 out of date가 될 가능성이 있다.
- Ownership이 Server에 있다.
-
그래서 react-query를 선택했다.