그렇게 어려운 작업은 아니지만 로딩, 결과, 오류를 위한 상태를 직접 관리해줘야 하죠. 요청하는 API의 수가 많아지면 조금 귀찮을 수 있습니다. 게다가 이렇게 컴포넌트에서 바로 API를 요청하면 사용자가 다른 화면으로 이동하여 컴포넌트가 화면에서 사라질 때 상태 또한 사라집니다. 따라서 나중에 다시 컴포넌트를 보여줄 때 기존에 받아온 응답 결과를 사용하지 못하고 API를 새로 요청하게 되지요. 즉, 캐싱되지 않습니다.
만약 캐싱하고 싶다면 데이터를 Context 또는 리덕스, 리코일 등의 라이브러리에서 관리해야 하는데, 이렇게 되면 준비해야 할 코드가 많아 더욱 복잡해집니다.
리액트 쿼리를 사용하면 컴포넌트에서 Hook을 기반으로 데이터 로딩을 훨씬 편하게 할 수 있고, 캐싱도 기본적으로 제공하여 쉽게 구현할 수 있습니다.
이 장에서는 리액트 쿼리의 사용법을 배우고, 마지막 앱 개발 실습을 진행하겠습니다. 개발할 앱은 간단한 게시판 앱입니다. 14장에서 구축한 REST API 서버를 연동하여 CRUD(Create·생성, Read·읽기, Update·수정, Delete·삭제) 기능을 구현해보겠습니다.