2017-06-11 21 views
1

私は自分のアプリケーションの状態を管理するためにngrxライブラリを手に入れようとしています。私は多くのngrxドキュメントとgitページを見てきました。 ngrx:reducers関数が呼び出されたときにどのように呼び出されますか?

Storeが我々のアプリケーションのためのデータの単一ソースである

  1. ストア
  2. リデューサーと
  3. アクション:私は三つの重要な概念であることを理解しています。したがって、データの変更や取得はアクションを通じて行われます。ここで私の質問は、アクションが店舗に派遣されたときに正確に何が起こるかです。どのレデューサーが呼び出されるのかはどのように分かりますか?店舗に登録されているすべてのレデューサーを解析しますか?その場合、同じ名前で複数のアクションが発生する可能性があります。

    ありがとうございます。百聞は一見にしかずです

+0

アクションがディスパッチされると、すべてのリデューサに渡されます。したがって、同じ名前の複数のアクションを持つことはできません。 – cartant

+0

@cartant - ngrxはユーザーに同じ名前のアクションがないように強制する方法を教えてください。大きなアプリでは何百ものアクションがあり、アクション名の衝突の可能性があります。 – Ritesh

+1

あなたの行動に異なるタイプがあることを確認することはあなた次第です。必要ならば、[example app](https://github.com/ngrx/example-app/blob/master/src/app/actions/book.ts#L4-L7)のように範囲を設定します。 – cartant

答えて

1
+0

この写真は少し誤解を招いています。ミドルウェアは、リデューサに渡されるアクションに対して何らかの制御を持つことを示唆しているようです。私はそれが事実だとは思わない。私の理解では、エフェクトはngrxのミドルウェアであり、彼らは(* after *)(https://github.com/ngrx/effects/blob/v2.0.3/src/actions.ts#L12-L15)ディスパッチャから独立しています。 – cartant

+1

ミドルウェア(エフェクト)はAPIと通信し、アクションを生成します。そのアクションは、現在の状態と組み合わされて減速機に渡され、次の状態を生成する。状態がビューに出力されます。私はその絵が正確だと信じています。 – pixelbits

+0

Aha ..この図が大好きです。今はすべてが明らかです。 :) – Ritesh

1

ここで私の質問は、アクションが店舗に派遣されたときに正確に何が起こるかです。 登録されたレデューサーのすべてが、アクションを処理する機会を得ます

どのレデューサーを呼び出すのかはどのように分かりますか? 登録されたレデューサーがすべて呼び出されます。 console.logsをすべてのレデューサーに入れて、あなた自身で見ることができます。

ストアに登録されているすべてのレデューサーを解析しますか? はい

同じ名前で複数のアクションが発生する可能性があります。 同じ名前のアクションが複数ある場合は、同じ扱いになります。たとえば、ペイロード3でタイプ "ADD"をディスパッチし、ペイロード3でタイプ "ADD"と呼ばれる別のアクションをディスパッチした場合、それは同じことになります。

Ngrxはそれほどスマートではありません。我々は、次の減速があるとしましょう:

constの減速= { ブログ:BlogReducer、 ポスト:PostReducer、 コメント:CommentReducer }

私は 'ADD_COMMENT' を派遣言います。基本的にはBlogReducerが最初にそれを処理し、その後にPostReducer、最後にCommentReducerで処理します。順序は、上記のレデューサーオブジェクトをどのように指定したかによって決まります。だから私は、このやった場合:

のconst減速= { コメント:CommentReducer、 ブログ:BlogReducer、 ポスト:PostReducer を}

CommentReducerがしようとすると 'ADD_COMMENT' を処理するための最初のものであろう。

関連する問題