- 리액트 쿼리는, 서버에서 가져온 데이터를 웹 브라우저 앱에서 사용하기 쉽게 도와주는 기술
- 서버는 클라이언트에게 데이터베이스에 있는 정보를 전달해주는 역할을 한다
> 이 때, 서버:api서버 / 클라이언트: 리액트 앱(웹 브라우저에서 실행되는, 우리가 작성한 앱)
server state / client state를 가지고 있는 어플리케이션의 아키텍쳐 구조
데이터베이스에서 가져온 데이터를 클라이언트에서 보여주기 위해 우리는 ajax를 이용하는데, 이 때 서버에서 가져오는 데이터를 '서버의 상태'라고 이야기 한다. (서버 스테이트)
서버는, 데이터 베이스에서 기록된 정보 (ex.유저 기록)를 불러온다. 이러한 정보들을 조합해서, 서버state를 만들고, 클라이언트에게 그것을 응답으로 내려준다( ajax호출을 통해)
클라이언트는, 서버에서 받은 해당 정보를 가져다가, 클라이언트에서 사용하기에 간편한 형태로 재조합하여, 클라이언트 state를 만든다.
Client state
client state는 크게 두 가지로 나눌 수 있다.
1. client에서 자체적으로 만드는 state(최초 데이터의 발생지가 클라이언트)
2. server에서 전달받은 값으로 만드는 state(최초 데이터 발생지가 서버)
< client가 자체적으로 만드는 state>
-대개, UI를 담당하는 부분
ex) 모달이 열리고 닫혔는지, 어떤 버튼이 클릭되었는지, 지금 창이 리사이징 되고 있는지, 현재 웹사이트가 다크모드인지 라이트모드인지에 대한 메타 정보를 담은 상태값
< 서버state -> client state로 가져오는 부분>
- 서버의 상태값을 받아오는데에, 리액트에서는 정해진 모범답안은 없음
- 컴포넌트의 생명 주기를 파악한 후 적절한 시점에 ajax호출을 하고 서버에서 데이터를 받아온다. -> 이를 internal state나 external state도구를 통해, 서버state를 컴포넌트 state로 wrapping한 이후, 서버 state를 클라이언트 state로 사용한다.
-useState를 사용할 경우, 데이터를 불러와 setState호출을 통해, 응답 당시의 server state를 component state로 wrapping한다.