프로젝트를 1주 앞둔 현재, 지난 프로젝트에서 발생한 문제를 사전에 예방하고 더 나은 프로젝트 경험을 가져가려고 준비하고 있다.
지난 프로젝트에서 크게 변수로 작용한 것 중 하나가 비동기 로직 문제였다. 나는 서버에서 받아오는 데이터를 요청하는 비동기 로직을, 해당 데이터가 필요한 컴포넌트 내에서 바로 호출해서 상태값으로 저장했다.
그러나, 한 구간에서 비동기 요청을 너무 많이 사용했고, 서버에서 받아와 저장한 상태값이 서로 연관성을 크게 가졌기 때문에, 여러 문제가 발생했다.
- 첫째로, 비동기 요청을 통해 가져온 데이터 결과를 상태값으로 저장하고, 다음 비동기 POST 요청에서 params로 넘겨야 했는데, 해당 값이 저장되기 전에 다음 요청 로직이 실행 되어서 빈 값을 대신 넣어 보내는 문제가 발생했다.
- 각 페이지 컴포넌트 마다, 서버에서 받아온 데이터를 저장한 상태값을 저장했기 때문에 해당 값이 어디에 있는지 나중에 파악하기 힘든 문제도 발생했다.
- 마지막으로, 해당 값은 서버에서 받아온 후, 최신 값인지 보장하기 힘들었고, 데이터를 받아오는 도중인지 확인하기 위한 loading state, 에러 발생을 확인하기 위한 error state를 따로 useState 훅으로 관리해서 복잡성이 높아졌다.
위와 같은 문제는 특히 개발 이후에, 디버깅 및 유지 보수를 하는 과정에서 골칫덩어리로 다가왔고, 다음 프로젝트에서 같은 문제를 만나지 않기 위해 이에 대한 해결책을 찾아야 했다.
그렇게 찾은 해결책 중 하나가 React Query 라이브러리였다. 아래의 내용부터는 React Query가 무엇인지, 그리고 왜 필요한 지에 대해 정리하였다.
React Query는 간단하게 말해서 data fetching을 위한 React 라이브러리라고 할 수 있다.
⇒ 위와 같은 server state를 쉽게 관리하기 위해, React Query 라이브러리가 등장하였다.