状態管理パターン
このガイドでは、フロントエンドアプリケーションにおける様々な種類の状態の管理方法を説明します。各ツールをいつ使用するかを理解することで、古いデータ、不要な再レンダリング、複雑なデバッグなどの一般的な問題を防ぐことができます。
このガイドを使用するタイミング
以下が必要な場合にこのガイドを使用してください:
- APIレスポンスをキャッシュし、サーバーと同期を保つ
- コンポーネント間でUI状態(サイドバー、テーマ、モーダル)を共有する
- データ取得のローディング状態とエラー状態を処理する
- より良いユーザー体験のための楽観的更新を実装する
- SaaSアプリケーションでマルチテナントコンテキストを管理する
適切なツールの選択
最も一般的な間違いは、すべての状態に1つのツールを使用することです。状態の種類によって要件が異なります:
| カテゴリ | ツール | 例 | このツールを選ぶ理由 |
|---|---|---|---|
| サーバー状態 | Context API + axios | APIデータ、ローディング状態 | HTTPリクエストの直接制御、シンプルなキャッシング戦略 |
| リアルタイム状態 | Apollo Client | GraphQLサブスクリプション、ライブ更新 | AppSync用の組み込みサブスクリプションサポート |
| クライアント状態 | Context API | UI状態、ユーザー設定 | React組み込み、追加の依存関係なし |
| フォーム状態 | React Hook Form | フォーム入力、バリデーション | フォームパフォーマンスに最適化、組み込みバリデーション |
| URL状態 | Next.js Router | クエリパラメータ、パスパラメータ | 共有可能なURL、ブラウザ履歴の統合 |
現在の実装
MBC CQRS Serverless Webパッケージは以下の状態管理アーキテクチャを使用しています: