react-query 는 React Application에서 서버 상태를 가져오고, 캐싱하고, 동기화하고, 업데이트 하는 작업을 합니다.
기본적으로 React Application 에서는 서버로부터 데이터를 가져오거나 업데이트하는 방법을 제공하지 않습니다.
개발자는 자체적으로 이 방법을 구축해야 하는데 일반적으로는 react hooks 를 사용하여 컴포넌트 state 및 effect 를 조합하거나 글로벌 상태 머신을 사용하여 React Application 전체의 비동기 처리를 다룹니다.
대부분의 전통적인 상태 관리 라이브러리는 비동기처리나 서버 상태 작업 보다는 클라이언트 상태 관리에 적합한데
여기서 서버 상태란 아래의 특징을 갖습니다.
- 사용자가 제어하지 못하는 위치에서 원격으로 유지합니다.
- 비동기 API 를 통해 서버 상태를 가져오거나 업데이트 합니다.
- 소유권이 다른 사람과 공유됩니다.
- 주의하지 않으면 Application 에서 잠재적으로 out-of-date 상태가 될 수 있습니다.
클라이언트에서 서버 상태를 처리할 때 다양한 문제를 마주하게 됩니다.
- 캐싱(Caching)
- 백그라운드에서 out-of-date 된 데이터를 갱신해야 할 때
- 데이터가 out-of-date 될 때를 파악해야 할 때
- 가능한 빠르게 데이터 업데이트를 반영해야 할 때
- 페이징이나 지연 로딩(Lazy Loading) 데이터를 최적화해야 할 때
- 메모리 가비지 컬렉션을 운영해야 할 때
- 쿼리 결과를 메모이제이션(Memoization)