데이터 캐싱
Concurrent mode 지원
→ 기존의 코드를 가지고 에러, 로딩에 대한 분기처리를 할 경우 각 컴포넌트마다 세가지 상태에 대한 화면 보여주기 처리를 다 해주어야 합니다.
→ 이때 중복되거나 비슷한 에러 처리의 경우에도 일일이 적어야하는 코드량이 많아지고 가독성도 떨어집니다.
→ 하지만 리액트 쿼리의 경우 Suspense, Errorboundary를 제공, 에러를 선언적으로 처리할 수 있다는 장점이 존재합니다.
에러 핸들링과 낙관적 업데이트
depth 가 깊은 props drilling을 막고 유지보수성을 높이자
ex) 저희 셀럽잇 서비스는 지도에 있는 맛집과 음식점 리스트를 동기화 시켜주는 기능이 있습니다.
음식점 리스트 컴포넌트와 지도 컴포넌트는 경도, 위도, 그 외 여러가지 필터링 되는 요소에 데이터를 공유, 그 외 어떤 음식점이 hover되었는지 기타 등등 많은 요소들을 공유하고 있습니다.
이를 공유하기 위해서 두 컴포넌트를 묶는 최상위 컴포넌트에 대부분의 state를 공유, props drilling depth가 엄청나게 깊어져 갔습니다. (google map api…) → 유지보수성, 가독성 모두 안 좋아지고 있었습니다.
따라서 이를 해결하기 위해 전역 상태 라이브러리를 사용했습니다.
그 외 모달창, 팝업창 등 다양한 기능에도 이를 잘 활용할 수 있을 것 같아서 사용했습니다.