2017-01-13 24 views
0

私はいくつかの状態(減速)を持つアプリケーションを開発しています。メッセージ、好き、コメントであるとしましょう(すべてが完全に異なるインスタンスのものなので、それらを1つの状態にまとめるべきかどうかはわかりません)。reduxストアのアーキテクチャの問題

私は30秒ごとにサーバーにリクエストし、アプリケーションのどの部分が更新されたかを示す応答を受け取ります。例えば。私は新しいメッセージや新しいコメントを受け取りました。

私は実際にこれらの対応方法を知りません。まず、私は単にコンテナが他のすべての州を更新できるようにすることができますが、すべてのコンテナがそれ自身の状態を持つべきであるので、それは良いアイデアだとは思いません。

第2に、私はすべてのアクションを捕らえるミドルウェアを作成し、必要な情報を持つミドルウェアを見つけて、別のアクション(新しいメッセージなど)を作成します。その後、メッセージの削減者はこのアクションをキャッチします。これは二つの理由のために正しいアプローチである場合、私は再びわからない:

  1. それは(それが双方向の流れではありません)ミドルウェアからのショットのアクションに大丈夫ですか?
  2. 私は実際にそれを行うことができますか?

ありがとうございます。

UPD。私はミドルウェアを使用してそれをやったが、これが正しい方法であるかどうかまだ分かっていない。私のミドルウェアでは、私はstore.getState()を使用して必要なデータを取得し、次にstore.dispatch(myAction)を作成します。それは大丈夫ですか?

答えて

1

還元剤/ =状態であることを理解することが重要です。 (レデューサが等しい状態ではない)

アプリケーションには1つの状態、1つのストアが必要です。 combineReducersを使用すると、すべての状態を1つの状態に保つために減速機を組み合わせることができます。

http://redux.js.org/docs/api/combineReducers.html

あなたは、非同期動作を処理するために再来して、既定されていない何かを必要とし、したがって、あなたは、ミドルウェアのいくつかの種類を使用する必要があります - あなたは正しい軌道に乗っていた意味を。

しようとすると、一回のような、より一般的に使用:あなたのアプリケーションから非同期ロジックを分離することをお勧めします https://github.com/gaearon/redux-thunk https://github.com/redux-saga/redux-saga

。つまり、アプリケーションで非同期呼び出しを初期化する必要がありますが、ストア内に非同期ロジックを保持する必要があります。ここで

は単純明快であるダン・アブラモフとReduxの-サンクによってガイドです: http://redux.js.org/docs/advanced/AsyncActions.html

は、それはあなたに答え願っています。

関連する問題