デフォルトでグローバルストアに手を伸ばすのではなく、状態の種類にツールを合わせます。ほとんどの「グローバル状態」の問題は、実際には仕事に対して間違ったツールを選んでいるだけです。
意思決定ガイド
text
Local UI state (toggle, input) → useState / useReducer
Shared, low-frequency (theme, user) → Context
Server/API data → React Query / SWR (NOT a global store)
Complex global client state → Zustand / Jotai / Redux Toolkit
URL-shareable state (filters, page) → the URL (search params)
最も重要な洞察: サーバー状態 ≠ クライアント状態
API からのデータは、あなたが所有する状態ではなく、リモートデータのキャッシュです。これを Redux に入れると、ローディング、キャッシュ、再取得、無効化を手動で扱うことになり、面倒でバグを生みやすくなります。サーバー状態ライブラリはそれらをすべて行います:
jsx
{ data, isLoading } = ({ : [], : getTodos });
