💡 클라이언트 데이터란?
클라이언트 데이터는 일반적으로 사용자 또는 클라이언트 프로그램(예: 웹 브라우저, 모바일 앱)가 생성, 유지하고 전송하는 데이터를 의미한다.
❓예시
- 검색어나 필터 설정과 같은 정보
- 선택한 상품 및 주문 내역
- 모달 관련 데이터, 페이지 관련 데이터
💡 서버 데이터란?
서버 데이터는 서버 컴퓨터에서 생성, 유지하고 저장되는 데이터를 의미한다. 서버는 클라이언트의 요청을 처리하고 응답을 생성하는 역할을 한다.
❓예시
- 웹 서버는 웹 페이지의 내용, 이미지, 동영상 파일 및 데이터베이스 정보와 같은 여러 종류의 데이터
- 모든 판매 상품 정보, 재고 수량, 가격, 제품 설명 등
- 주문 내역, 결제 정보, 주문 처리 상태, 배송 추적 정보
- 비동기 API 호출을 통해 불러오는 데이터
이를 위해 React-Query에서는 기본적인 아래의 옵션들을 제공한다.
refetchOnWindowFocus, //default: true
refetchOnMount, //default: true
refetchOnReconnect, //default: true
staleTime, //default: 0
cacheTime, //default: 5분 (60 * 5 * 1000)
❗위의 옵션들을 통해 우리는 React-Query가 어떤 시점에 데이터를 Refetching하는지 알 수 있다.
const { data, isLoading } = useQueries(
['unique-key'],
() => {
return api({
url: URL,
method: 'GET',
});
},
{
onSuccess: (data) => {
// data로 이것저것 하는 로직
}
},
{
onError: (error) => {
// error로 이것저것 하는 로직
}
}
)
=> 즉, Client 데이터는 상태 관리 라이브러리가 관리하고, Server 데이터는 React-Query가 관리하는 구조라고 생각하면 된다. 이를 통해 우리는 Client 데이터와 Server 데이터를 온전하게 분리할 수 있다.
useQuery 훅은 서버로부터 데이터를 가져오는 데 사용된다. 주로 데이터를 읽는 작업에 사용되며, 해당 데이터를 캐시하고 실시간 업데이트를 관리.
이 훅을 사용하면 쿼리 함수와 옵션을 제공하여 서버로 데이터 요청을 보내고 데이터를 가져올 수 있다.
const { data, error, isLoading } = useQuery('userData', fetchUserData);
useQueries 훅은 여러 개의 쿼리를 동시에 처리할 때 사용. 여러 개의 서버 데이터 요청을 병렬로 수행하고 결과를 받아올 수 있다.
각 쿼리는 개별적으로 정의되고, 각각의 결과를 확인할 수 있다.
const queries = [query1, query2, query3];
const results = useQueries(queries);
useMutation 훅은 서버에 데이터를 업데이트, 생성, 삭제하는 데 사용. 주로 데이터를 쓰는 작업에 사용되며, 성공 또는 실패와 같은 결과를 처리할 수 있다.
이 훅을 사용하면 뮤테이션 함수와 옵션을 제공하여 서버에 데이터 변경 요청을 보내고 결과를 처리할 수 있다.
const mutation = useMutation(updateUserData);
카카오페이 프론트엔드 개발자들이 React Query를 선택한 이유
[React-Query] React-Query 개념잡기