2016-12-18 19 views
0

私はReduxアーキテクチャを使用してデモAndroidプロジェクトを作成しようとしていますが、成功/失敗した非同期アクションに対する反応として、AndroidでReduxでフラッシュメッセージを表示

長寿命ビューの場合は、結果をユーザーに通知します。特定のフラグで状態を変更し、ビューを表示する別のアクションをディスパッチします。しかし、ToastまたはSnackBarを使用したい場合は、フラグを取り消す手段がなく、別の状態変更後にメッセージを表示するだけです。

私はReduxのに新しいですが、私は減速は純粋関数でなければならないことを読んで、私が正しく、純粋な関数の概念を理解していれば、フラッシュメッセージを表示することは許可されていない副作用です。だから私は状態を変更せずに呼び出すだけのアクションをディスパッチできません。

私が見ることのできる唯一のオプションは、Reduxフロー以外のすべての非同期操作を処理し、それらのイベントに反応してアクションをディスパッチし、イベントハンドラにもフラッシュメッセージを表示することです。しかし、私の心に、すべてのUIの変更も状態で変化であり、かつストアでそれを反映していない問題です。だから、私はReduxパターンに違反していると感じ、アーキテクチャ自体から多くを取ってテスト能力を低下させるように感じます。

出口がありますか?

答えて

0

Reduxは、ミドルウェアのようなコンポーネントを記述します。 http://redux.js.org/docs/advanced/Middleware.html

記事から引用: 「それがアクションをディスパッチの間に、サードパーティの拡張ポイントを提供し、瞬間は、それが減速に達します。」

この副作用のためにミドルウェアを作成することができます。あなたのシステムには、SetSuccessLoadingActionやSetFailedLoadingActionなどのアクションがあります。ミドルウェアでは、これらのアクションを決定し、必要なものを実行できます。

たとえば、ミドルウェアが別の面でどのように影響しているかを見ることができます。 https://github.com/zyvpeople/Redux

関連する問題