👇 공식문서에서는 React-Query를 다음과 같이 설명하고 있다.
💡 React Query는 React Application에서 서버 상태를 불러오고, 캐싱하며, 지속적으로 동기화하고 업데이트하는 작업을 도와주는 라이브러리다
등, 이런 장점으로 인해 React Query의 사용량이 늘어나고 있는 추세이다.
useQuery를 이용해서 데이터를 fetching 할 수 있다
HTTP GET 요청을 할 때, 주로 사용한다
// useQuery 사용 예시
const { data, isLoading, error } = useQuery('hostParties', () =>
getAPI(`${PARTIES_URL.MY_HOST_LIST}`),
);
if (isLoading) {
return <div>로딩중입니다.</div>;
}
if (error) {
return <div>Error : {error.message}</div>;
}
서버의 데이터를 변경할 때 사용한다
HTTP POST, PUT, DELETE 요청을 사용할 수 있다
기본적으로 useQuery와 비슷하지만 query key가 안 들어 간다는 차이점이 있다.
// useMutation 사용 예시
const AlramDelete = useMutation(noticeId => deleteAPI(`/sse/notice/${noticeNumber}`), {
// 요청이 성공한 경우
onSuccess: response => {
queryClient.invalidateQueries('requests');
alert(response.data.msg);
},
// 요청에 에러가 발생된 경우
onError: error => {
alert(error.data.msg);
},
});
useMutation을 사용해서 데이터를 create, update, delete 후 변경된 데이터를 확인하고 싶으면 데이터를 새로 fetch 해야한다
이런 상황을 간단하게 해결할 수 있는 방법으로 invalidateQueries를 사용할 수 있다
// Query Invalidation 사용 예시
const acceptRequest = useMutation(
participateId => postAPI(`${PARTIES_URL.ACCEPT}/${participateId}`),
{
onSuccess: response => {
queryClient.invalidateQueries('requests');
alert(response.data.msg);
},
onError: error => {
alert(error.data.msg);
},
},
);