팀 과제를 진행 중 전역 상태를 관리하기 위해서 redux를 사용하려고 했으나, react-query를 사용하여 서버 상태 관리를 하기로 했다.
React Query에 대해서 잘 몰랐는데 이번 기회에 동작 원리에 대해서 공부하는 시간을 가졌다.
react-query는 서버에 요청하고 응답받는 모든 과정과 연관된 데이터들을 관리하기 쉽게 해주는 라이브러리이다.
서버 상태 관리는 4가지의 내용이 있다.
swr은 Stale - while - revalidate의 약자로 신규 데이터가 도착하는 동안 일단 기존 캐싱된 데이터를 사용하도록 하는 전략이다. 이를 통해서 헌거 먼저 주고 리렌더링 되면 새거가 교체되는 방식으로 동작한다.
react-query의 라이프 스타일은 위와 같은 방식으로 동작한다. 이 중에서 특히 헷갈릴만한 내용은 다음과 같은데
각각의 데이타 마다 해당 lifecycle을 가지고 있다.
이번 팀 과제 중에서 가장 중요했던 기능으로 미리 만들어둔 useQuery를 내가 원하는 타이밍에 실행을 시키고 싶었다. 즉, 특정 이벤트가 발생했을 시에 수동적으로 실행을 하고 싶었다. enabled 옵션 속성 값을 통해서 자동으로 실행하지 않고 refetch라는 함수를 가져와서 원하는 타이밍에 데이터를 가져올 수 있게 할 수 있다.
const {data,refetch} = useQuery(
['todos'],
getTodos,
{enabled: true}
);
const handleClick = () => {
refetch();
}
해당 내용을 이번 팀 과제에서는 아래와 같이 구현을 하였다.
복잡한 로직을 구성할 필요 없이 오로지 상태에 대한 직관적인 내용으로 관리 할 수 있구나에 대해서 느꼈으며 좋은 라이브러리를 배운 것 같아서 기분이 좋다
리액트 쿼리 짱짱맨!!