데브허브 | DEVHUB | I Found the Best React State Manager — It’s the URL?!I Found the Best React State Manager — It’s the URL?!
- React의 상태 관리자로 30년 이상 된 웹의 기본 기능인 URL 쿼리 파라미터를 활용하여 상태를 영구적으로 저장하고 공유하는 방법을 제시합니다. 🌐
useState가 메모리에만 상태를 저장하여 페이지 새로고침, 북마크, 뒤로/앞으로 가기 시 상태가 초기화되는 문제를 useQueryState를 통해 해결합니다. 🔄
- Nux는 타입 안전성, 파싱(모든 쿼리 파라미터는 문자열), 스로틀링, 다양한 엣지 케이스 처리 등 복잡한 부분을 자동으로 처리하여 URL 상태 관리를 매우 쉽게 만듭니다. ✨
- Next.js, React Router, Remix, Vite with React 등 대부분의 주요 React 프레임워크를 지원하며, Tanstack은 자체 지원으로 제외됩니다. 🚀
- 패키지 매니저로 쉽게 설치하고, 각 프레임워크의 라우팅 시스템에 맞게 간단한 어댑터 설정을 통해 바로 사용할 수 있습니다. 🛠️
- 모든 쿼리 파라미터가 문자열인 문제를 해결하기 위해 불리언, 숫자, 배열, 날짜 등 다양한 내장 파서를 제공하며, JSON(Zod) 인코딩 및 커스텀 파서도 지원합니다. 🧩
- 브라우저의 히스토리 API 속도 제한(특히 Safari)으로 인한 문제를 Nux의 스로틀링 기능으로 해결하여, UI 업데이트는 빠르면서 URL 업데이트는 효율적으로 관리합니다. ⏱️
- 서버 요청이나 데이터 페칭과 같이 비용이 많이 드는 작업의 경우
throttleMilliseconds 옵션을 사용하여 쿼리 파라미터 업데이트 빈도를 조절할 수 있습니다. ⚡
history 옵션(replace 또는 push)을 통해 쿼리 업데이트가 브라우저 히스토리에 어떻게 기록될지 제어하여, 페이지네이션이나 모달과 같은 특정 UI 패턴에 최적화된 경험을 제공합니다. 📜
- Next.js와 같은 프레임워크에서
createSearchParmsCache를 사용하여 서버 컴포넌트에서 쿼리 파라미터를 안전하게 파싱하고 활용할 수 있으며, shallow: false 옵션으로 클라이언트-서버 동기화를 지원합니다. ☁️
serialize 함수로 링크 생성, URL keys로 짧은 파라미터 이름 사용, SEO 및 훅 재사용에 대한 가이드 등 다양한 고급 기능을 제공합니다. 💡