スキル react-state-management
📦

react-state-management

安全

Reactの状態管理を実装する

Reactコンポーネント間で状態を管理すると、コードが複雑になりデータの一貫性が損なわれることがあります。このスキルは、Redux Toolkit、Zustand、Jotai、React Queryの包括的なパターンを提供し、ローカル・グローバル・サーバー状態を効率的に扱えるようにします。

対応: Claude Codex Code(CC)
📊 71 十分
1

スキルZIPをダウンロード

2

Claudeでアップロード

設定 → 機能 → スキル → スキルをアップロードへ移動

3

オンにして利用開始

テストする

「react-state-management」を使用しています。 What state management library should I use for a small app with simple global state needs?

期待される結果:

小規模アプリでシンプルなグローバル状態が必要な場合は、ZustandまたはJotaiが優れた選択肢です。

**Zustand** は最小限のボイラープレートで最もシンプルなAPIを提供します:
- 単一のフック風関数でストアを作成
- devtoolsと永続化ミドルウェアを内蔵
- Provider不要
- 選択的サブスクリプションで不要な再レンダーを防止

**Jotai** はアトミックで粒度の細かい更新に優れています:
- 各状態は独立したアトム
- 派生アトムが他のアトムから自動的に計算
- 細かなリアクティビティに最適

統一ストアモデルが好みならZustandを選びましょう。グローバルストアのラッパーなしでアトミック更新を望むならJotaiが適しています。

「react-state-management」を使用しています。 How do I handle server state with React Query vs client state with Redux Toolkit?

期待される結果:

明確さと保守性のために、サーバー状態とクライアント状態を分離しましょう:

**React Queryがサーバー状態を担当:**
- サーバーデータ、キャッシュ、同期
- 自動再フェッチとバックグラウンド更新
- stale-while-revalidateのキャッシュ戦略
- ロールバック付きの楽観的ミューテーション

**Redux Toolkitがクライアント状態を担当:**
- UI状態(モーダル、サイドバーの開閉)
- 認証状態(Cookie以外の場合)
- アプリの設定やプリファレンス
- 複雑なクライアント側の派生状態

この分離により関心の混在を防ぎ、各ツールの目的が明確になるためデバッグもしやすくなります。

セキュリティ監査

安全
v5 • 1/21/2026

All 44 static findings are false positives. The scanner incorrectly flagged markdown code blocks as shell commands, standard documentation URLs as hardcoded secrets, and React/Redux patterns (state, slices, selectors) as cryptographic or reconnaissance patterns. This is legitimate documentation for React state management libraries.

2
スキャンされたファイル
915
解析された行数
0
検出結果
5
総監査数
セキュリティ問題は見つかりませんでした
監査者: claude 監査履歴を表示 →

品質スコア

38
アーキテクチャ
100
保守性
87
コンテンツ
29
コミュニティ
100
セキュリティ
91
仕様準拠

作れるもの

新規プロジェクトにおける状態ソリューションの選定

新しいReactアプリケーションを開始する開発チームが、アプリの規模と要件に基づいて適切な状態管理アプローチを選ぶ必要があります。

サーバーデータのキャッシュ実装

フロントエンド開発者が、ReactアプリケーションのAPIデータに対してキャッシュ、バックグラウンド再フェッチ、楽観的更新を追加したいと考えています。

レガシーReduxのモダンパターンへの移行

開発者が冗長なReduxのボイラープレートコードを、Immerによるイミュータブル更新を使ったRedux Toolkitに更新する必要があります。

これらのプロンプトを試す

基本: Redux Toolkitのセットアップ
ReactアプリでTypeScriptと一緒にRedux Toolkitをセットアップするにはどうすればよいですか?slicesとtyped useDispatch/useSelectorフックを使ってストアを作成する方法を示してください。
中級: 永続化付きZustand
devtoolsサポート付きでlocalStorageに永続化するZustandストアの作成方法を教えてください。コンポーネントでストアにアクセスする方法と、型付きの状態更新の扱い方も含めてください。
上級: 楽観的更新付きReact Query
楽観的更新を行うReact Queryのmutationを書いてください。以前の状態をスナップショットするonMutate、ロールバックのためのonError、再フェッチのためのonSettledを含めてください。
エキスパート: 複数の状態アプローチの組み合わせ
同じアプリケーション内で、サーバー状態にはReact Query、クライアント専用状態にはZustandを組み合わせるにはどうすればよいですか?関心の分離と、コンポーネントが両方を消費する方法を示してください。

ベストプラクティス

  • 状態は可能な限り使用箇所の近くに配置する - すべてをグローバル状態に入れない
  • セレクタで必要なデータだけをストアから取得し、不要なコンポーネント再レンダーを防ぐ
  • サーバー状態(React Query)とクライアント状態(Zustand/Redux)を分離する - それぞれ更新パターンとライフタイムが異なる

回避

  • 複数コンポーネントで参照されるという理由だけで、すべての状態をグローバルに置く - ローカル状態で十分なことが多い
  • イミュータブル更新パターンやImmerのようなライブラリを使わずに状態を直接変更する
  • React Queryとクライアントストアの両方にサーバー状態を重複させる - サーバーデータはReact Queryを単一の真実のソースにする

よくある質問

Redux Toolkit、Zustand、Jotaiの違いは何ですか?
Redux ToolkitはImmerによるイミュータブル更新を備えたモダンなReduxで、Redux DevToolsとTypeScriptサポートが必要な大規模アプリに最適です。Zustandは最小限で特定の思想に縛られず、シンプルから中規模のアプリに向いています。Jotaiは各状態が独立したアトミック状態を使い、細かなリアクティビティと小さなバンドルに理想的です。
データに対してReduxではなくReact Queryを使うべきタイミングは?
APIから来るサーバーデータにはReact Queryを使います。キャッシュ、バックグラウンド再フェッチ、リクエストの重複排除、楽観的更新を自動で扱います。React Queryで管理できないクライアント状態(UI状態や認証トークンなど)のみにReduxを使ってください。
Zustandで状態を永続化するにはどうすればよいですか?
zustand/middlewareからpersistミドルウェアをインポートして、ストア設定に追加します。ミドルウェアはlocalStorage用の名前と、永続化から除外する状態のオプションフィルタを受け取ります。ZustandがlocalStorageの読み書きを自動で行います。
複数の状態管理ライブラリを一緒に使えますか?
はい、ライブラリの併用は一般的で推奨されます。サーバー状態にはReact Query、クライアント状態にはZustandまたはRedux、アトミック状態にはJotaiを使います。それぞれ目的が異なり、競合せずにうまく連携します。
Redux DevToolsで状態をデバッグするには?
Redux ToolkitはconfigureStore関数を使うとデフォルトでdevtoolsが有効になります。devtoolsのブラウザ拡張で、アクション履歴、状態変化、タイムトラベルデバッグを確認できます。Zustandもdevtoolsミドルウェアを通じてdevtoolsをサポートします。
大規模アプリに推奨される状態構造は?
IDでキー付けされたエンティティを持つデータベースのように状態を正規化します。ドメインごと(user、products、cartなど)にスライスやストアを分けます。状態はフラットに保ち、ネストを避けることで更新を簡単にし、深い比較を防ぎます。

開発者の詳細

ファイル構成

📄 SKILL.md