NGRX/Storeを使用してAngular 2のアプリケーション状態の管理:包括的なガイド
この記事では、RXJを活用するRedux実装であるNGRX/Storeライブラリを使用して、Angular 2アプリケーションで効果的な状態管理を調査します。 共有された可変状態の課題に対処し、NGRX/Storeが単方向のデータフローアーキテクチャをどのように確立するかを示します。 サンプルアプリケーションには、YouTubeビデオ検索が含まれます
NGRX/Storeの重要な利点:
集中状態管理:アプリケーション状態に単一の真実のソースを提供し、コンポーネント間の一貫性を確保します。
RXJSを使用した
Reduxパターン:- RXJS Observablesを使用してReduxアーキテクチャを実装し、予測可能な状態遷移とリアクティブプログラミングを可能にします。
不変の状態:
アクションと還元剤を使用して状態の不変性を維持し、意図しない副作用を防止します。
-
コンポーネントデカップリング:状態管理ロジックからコンポーネントを分離し、コンポーネントの再利用性とテスト可能性を改善します。
- 簡略化されたテスト:予測可能な出力を生成する純粋な還元剤関数を使用したテストを促進します。
拡張デバッグ:- レバレッジNGRXストアDevToolsのデバッグと状態変更追跡の改善。
共有された可変状態の危険:-
複数の相互作用コンポーネントを持つアプリケーションでは、共有される可変状態は、矛盾と予測不可能な動作につながる可能性があります。 調整なしで同じデータを変更する複数のコンポーネントを想像してください - 共有コンピューターのオペレーティングシステムを個別に変更する複数のユーザーと同様です。
- 検索アプリケーションでの共有可変状態:
名前とロケーションベースの検索用のコンポーネントを備えた検索ページを検討してください。 これらのコンポーネントが共有検索オブジェクトを直接変更すると、一貫性を維持することが複雑になります。 ルールには、次のものが含まれます
空の名前フィールド:検索結果をクリアします。
名前のみ:名前で検索します。
名前と場所:名前と場所で検索。
ロケーション検索には、座標(緯度/経度)と半径が必要です。
課題への対処:
- いくつかのアプローチが存在しますが、多くの場合、冗長コード、複雑なテスト、単一の責任の原則の違反につながります。 コンポーネントとサービスの間に検索オブジェクトを直接渡すと、タイトな結合が作成され、テストが困難になります。 サービス内の検索オブジェクトをカプセル化すると、複数の責任を処理するサービスにつながります。
- ngrx/storeを備えたreduxソリューション:
-
ngrx/storeは、reduxパターンに基づいたソリューションを提供します。 ワークフローは次のとおりです
-
コンポーネントのディスパッチアクション:コンポーネント状態の変更を説明するアクションを発現します。
-
アクションストアを更新します:アクションはngrx/storeに発送されます。
-
還元剤は新しい状態を生成します:reducer関数プロセスアクションと現在の状態は新しい状態を生成します。
- サブスクライバーは状態の変更に反応します:コンポーネントはストアにサブスクライブし、状態の更新に反応します。
このアプローチは懸念を分離します:ngrx/storeは状態の一貫性を管理し、rxjsはメッセージの合格を処理します。
YouTube検索の例:
次のセクションでは、NGRX/Storeを使用してYouTubeビデオ検索アプリケーションの構築をガイドします。 完全なコードはgithubで利用できます。
(注:コンポーネント、還元剤、およびYouTube APIとの統合の詳細な実装は、フルレングスの記事に含まれます。スペースの制約のため、高レベルの概要を提供します。 )
アプリケーションは次のとおりです
:
検索クエリの構造を定義します(名前、オプションの場所、半径)。
-
search-query.model.ts
:検索結果の構造を定義します(id、title、thumbnail url)。
-
:
search-result.model.ts
入力が変更されたときにアクションを発送するテキスト入力を含むコンポーネント。
- :ロケーションベースの検索と半径入力のチェックボックスを備えたコンポーネント。
search-box.component.ts
>
- :派遣されたアクションに基づいてアプリケーション状態を更新する還元剤関数。
proximity-selector.component.ts
:- ngrx/storeをインポートおよび構成する角度モジュール。
search.reducer.ts
:- 検索コンポーネントと検索結果を表示するメインアプリケーションコンポーネント。
app.module.ts
ngrx/storeの統合: -
app.component.ts
ファイルは、を提供するように構成され、必要な還元剤を含めるように構成されます。 コンポーネントは、 およびディスパッチアクションを注入します。
は、uiを更新するためにストアを購読します。
結論:
NGRX/Storeは、Angular 2アプリケーションでアプリケーション状態を管理するための堅牢でスケーラブルなソリューションを提供します。 懸念を分離し、不変性を促進することにより、開発、テスト、デバッグを簡素化します。 このアプローチは、よりクリーンで保守可能なコードにつながり、アプリケーションアーキテクチャ全体を強化します。
app.module.ts
Store
(元の入力からのFAQセクションは、フルレングスの記事にここに含まれます。)Store
app.component.ts
以上がNGRX/Storeを使用したAngular 2アプリの状態の管理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。