【じょうたいかんり】

状態管理 とは?

💡 アプリ全体の「今どうなっているか」を管理する司令塔
📌 このページのポイント
Store(状態) コンポーネントA コンポーネントB コンポーネントC Action Reducer dispatch 状態更新 再描画
状態管理の仕組み
ひよこ ひよこ

状態って変数に入れておくだけじゃダメ?

ペンギン先生 ペンギン先生

普通の変数だと値が変わってもUIが更新されない。Reactの useState は値が変わったことを検知してコンポーネントを再描画してくれる。状態管理の仕組みを使うから「データが変わる→画面も変わる」が自動で実現できる。

ひよこ ひよこ

グローバル状態ってなに?

ペンギン先生 ペンギン先生

アプリ全体で共有する状態のこと。ログインユーザー情報やテーマ設定など、どのページでも使うデータ。コンポーネント間でpropsをバケツリレーするのが大変なとき、ReduxやContext APIで一箇所にまとめて管理する。

ひよこ ひよこ

ReduxとかZustandとか色々あるけどどれを使えばいい?

ペンギン先生 ペンギン先生

小規模ならReactのuseStateとContext APIで十分。中〜大規模になったらZustandが手軽でおすすめ。Reduxは大規模向けで学習コストが高い。まずは useStateをしっかり使いこなすことから始めよう。

ひよこ ひよこ

サーバー状態とクライアント状態って分けて考えるの?

ペンギン先生 ペンギン先生

最近はそれが主流だよ。サーバー状態(APIから取得するデータ)はTanStack Query(旧React Query)やSWRで管理して、クライアント状態(UIの開閉状態、フォーム入力など)はuseStateやZustandで管理する。2つを混ぜるとキャッシュの管理が複雑になるから、分離するのがベストプラクティスなんだ。

ひよこ ひよこ

状態管理を間違えるとどんなバグが起きるの?

ペンギン先生 ペンギン先生

よくあるのは「画面に古いデータが表示される」「入力した内容が勝手にリセットされる」「同じAPIを何度も呼んでしまう」というバグだね。特にグローバル状態に何でも入れすぎると、あるページの操作が別のページに予期しない影響を与える「スパゲッティ状態」になる。状態は必要最小限にして、できるだけローカルに保つのが鉄則だよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
状態管理って出てきたら「アプリの変化するデータを整理して扱う仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「state management」 = 状態の管理
💬 state は「現在の状態」、management は「管理」で、アプリの「今の状態」を管理する手法
← 用語集にもどる