NGRX制御フローの処理方法

ジョン・グレイソン

私はangular + ngrxを初めて使用し、大規模な適切な制御フローについて質問があります。Cars車のリストをロードして新しい車を作成できるコンポーネントがあるとします。これらのエフェクトが実行されるSUCCESSと、ディスパッチしてFAILUREアクションを実行します。私のngOnInit場合、適切に実行するために、これらの成功/失敗アクションのそれぞれにサブスクライブしています-次のようなものです。

ngOnInit() {
    this.actions$
      .pipe(
        ofType<fromCarsActions.GetCarsSuccessAction>(fromCarsActions.CarsActionTypes.GET_CARS_SUCCESS),
        takeUntil(this.unsubscribe$)
      )
      .subscribe(results => {
        // do something if load all cars SUCCEEDS
      });


      this.actions$
      .pipe(
        ofType<fromCarsActions.GetCarsFailureAction>(fromCarsActions.CarsActionTypes.GET_CARS_FAILURE),
        takeUntil(this.unsubscribe$)
      )
      .subscribe(results => {
        // do something if load all cars FAILS
      });


      this.actions$
      .pipe(
        ofType<fromCarsActions.AddCarSuccessAction>(fromCarsActions.CarsActionTypes.ADD_CAR_SUCCESS),
        takeUntil(this.unsubscribe$)
      )
      .subscribe(results => {
        // do something if add car SUCCEEDS
      });


      this.actions$
      .pipe(
        ofType<fromCarsActions.AddCarsFailureAction>(fromCarsActions.CarsActionTypes.ADD_CAR_FAILURE),
        takeUntil(this.unsubscribe$)
      )
      .subscribe(results => {
        // do something if add car FAILS
      });
}

これらすべてのSUCCESS / FAILUREアクションをサブスクライブすることは、数が少ない場合は問題ありませんが、より複雑なコンポーネントの場合はすぐに手に負えなくなる可能性があります。

私ができる別のオプションは、エフェクト自体に適切なアクションをディスパッチすることですが、それではエフェクトを再利用可能にすることはできません。

だから私の質問は、NGRXを使用してバックエンドと通信し、複数の異なる効果の成功/失敗のサブスクライブ/リスニングを簡単に管理するコンポーネントのベストプラクティスは何ですか?

これは少し抽象的な質問だと思いますので、何か明確にできるかどうか教えてください。

グルプラサドミシュラ

アクションをトリガーします

アクションは、レデューサー(ストアのみを更新します)またはエフェクト(DBからデータをフェッチするサービスを処理しますをトリガーします

次に、セレクターサブスクライブして変更を取得できます。

あなたの場合、アクションを作成します-

export const loadCars = createAction('Load Car data');

export const getcarsSuccess = createAction('Get Car data Success', props<{ carData: any }>());

export const getCarsError = createAction('Get Car data Error', props<{ errorResponse: any}>());

export const createCars = createAction('Add Car data');

export const createCarsSuccess = createAction('Add Car data Success', props<{ carData: any }>());

export const createCarsError = createAction('Add Car data Error', props<{ errorResponse: any}>());

上記のアクションは、エフェクトまたはレデューサーをトリガーできます

有効:

 @Effect()
  public loadCarData$ = createEffect(() => this.actions$.pipe(
    ofType(actions.loadCars ) ...

レデューサーの場合:

 const initReducer = createReducer(
  initialIState,
  on(actiona.loadCarData, state => (state)))

セレクター内:

export const carDataLoaded = (state: fromReducer.carData) => state.carData ;

export const getCarData = createSelector(
  getInitState,
  carDataLoaded 
);

最後に、コンポーネント内:

セレクターgetCarDataをサブスクライブできるため、コンポーネント-アクション-エフェクト-レデューサー-セレクター-コンポーネント

コンプで

 private carStore: Store<carStore> 
  this.carStore.dispatch(new loadCars ()); //dispatch load Cars Action
 this.carStore.pipe(select(
            getCarData })
        ).subscribe(cars => console.log(cars)) // subscribe to selector

注:前述のように、コンポーネントから直接任意のアクションをサブスクライブできますが、NGRX状態管理を使用する目的には役立ちません。

AngularアプリのどこからでもNGRXストアを更新し、アプリのどこからでもストアデータにアクセスできます。データの状態を維持することを心配することなく。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

実行フローを適切に制御する方法Javascript例外処理

分類Dev

PHPのrequire / includeの処理-制御フロー/インターセプト

分類Dev

例外処理におけるフロー制御

分類Dev

Javaのフロー制御のブール論理演算子

分類Dev

処理用のゲームパッド制御+ Arduinoロボットを制御するためのAndroid

分類Dev

HLSLのフロー制御

分類Dev

pywinauto-アラートウィンドウ制御の処理方法

分類Dev

入力アラートダイアログからの空のテキストを処理し、アラートボタンを制御する方法

分類Dev

非同期node.js関数による制御フローとエラー処理

分類Dev

cron / mailxでの制御文字処理

分類Dev

TaskCancellationException成功制御フローの例外を回避する方法は?

分類Dev

CompletableFutureのフローを制御する方法は?

分類Dev

NodeJS-promiseの実行フローを制御する方法は?

分類Dev

要素ごとの制御フローを実行する方法は?

分類Dev

制御フローの例外の使用

分類Dev

非同期ライブラリには、パイプラインを処理するための制御フローがありますか?

分類Dev

Reactで制御されたフォームコンポーネントの変更を処理する

分類Dev

Delphi:外部制御処理中のパッシブUIとしてのフォーム

分類Dev

再帰Pythonの制御フロー

分類Dev

FT232RLのフロー制御

分類Dev

Bashの制御フロー変数

分類Dev

Apama JMS CorrelatorAdapterの動的フロー制御

分類Dev

アクセスフォーム制御イベントを処理するクラスの作成

分類Dev

ConsumerGroup によるメッセージ処理の並行性を制御する方法

分類Dev

JavaScriptで適切なフロー制御論理条件が必要

分類Dev

Javaフロー制御

分類Dev

WebDriverJS制御フロー

分類Dev

制御フロー効率

分類Dev

NSNotificationと制御フロー

Related 関連記事

  1. 1

    実行フローを適切に制御する方法Javascript例外処理

  2. 2

    PHPのrequire / includeの処理-制御フロー/インターセプト

  3. 3

    例外処理におけるフロー制御

  4. 4

    Javaのフロー制御のブール論理演算子

  5. 5

    処理用のゲームパッド制御+ Arduinoロボットを制御するためのAndroid

  6. 6

    HLSLのフロー制御

  7. 7

    pywinauto-アラートウィンドウ制御の処理方法

  8. 8

    入力アラートダイアログからの空のテキストを処理し、アラートボタンを制御する方法

  9. 9

    非同期node.js関数による制御フローとエラー処理

  10. 10

    cron / mailxでの制御文字処理

  11. 11

    TaskCancellationException成功制御フローの例外を回避する方法は?

  12. 12

    CompletableFutureのフローを制御する方法は?

  13. 13

    NodeJS-promiseの実行フローを制御する方法は?

  14. 14

    要素ごとの制御フローを実行する方法は?

  15. 15

    制御フローの例外の使用

  16. 16

    非同期ライブラリには、パイプラインを処理するための制御フローがありますか?

  17. 17

    Reactで制御されたフォームコンポーネントの変更を処理する

  18. 18

    Delphi:外部制御処理中のパッシブUIとしてのフォーム

  19. 19

    再帰Pythonの制御フロー

  20. 20

    FT232RLのフロー制御

  21. 21

    Bashの制御フロー変数

  22. 22

    Apama JMS CorrelatorAdapterの動的フロー制御

  23. 23

    アクセスフォーム制御イベントを処理するクラスの作成

  24. 24

    ConsumerGroup によるメッセージ処理の並行性を制御する方法

  25. 25

    JavaScriptで適切なフロー制御論理条件が必要

  26. 26

    Javaフロー制御

  27. 27

    WebDriverJS制御フロー

  28. 28

    制御フロー効率

  29. 29

    NSNotificationと制御フロー

ホットタグ

アーカイブ