2017-05-09 2 views
3

私は、私のGUI上の現在の状態を更新するためにPOLLアクションで10秒ごとに1回実行するサガを持っています。反応のサガで計算やデータを微調整するのは悪い習慣ですか?

POLLが発生したとき私が気にしているコンポーネントを見つけるために残りのインターフェイスを歩くためにいくつかの呼び出しを行う必要があります。合計1〜5のコンポーネントがあります。これらのコンポーネントのそれぞれは、コンポーネントのFooとBar要素を別々に呼び出す必要があります。

次に、FooとBarのデータを組み合わせていくつかの集計を行う必要があります。リストを作成するためのテーブルで構造を予測し、ダッシュボードのすべてのコンポーネントの合計を計算します。私は非常に多くのものを持っているので、まともなビットのコードを追加する必要があります。

現在、私は佐賀でこれをやっていますが、これが悪い習慣と考えられるのかどうかはわかりません。私は減速機がデータ調整のための一般的な「行く場所」だと感じていますが、そのような大きなペイロードでアクションをスローすることは奇妙であり、残りの応答の多くはデータではないので、気にしない。私はまた、すべての処理の終わりに、ユーザーにエラーを表示するエラーアクションを渡すか、以前のエラーをクリアする成功アクションを渡すか、むしろ私のための決定のいくつかを決定することができますアクションをクリアしたい場合は、データをさらに処理する必要があります。

私の唯一の懸念は、処理を行うためにサガクラスの中で少し外れているようなヘルパーメソッドがたくさんあるため、ジェネレータがかなり大きくなっていることです(彼らは私が何であってもutilsクラスに移動する必要があります思う)。処理はあまりにも高価ではないし、私はジェネレータを使用しているので、処理がサガのスレッディングに顕著な影響を与えるとは思わない。それでも、推奨されるベストプラクティスがあればそれに固執したいと思います。私は、標準的なプラクティスから、私の佐賀のデータをすべて調整し、他の処理なしで状態に格納するためのフォーマットされたオブジェクトをレデューサーに送信していますか?

答えて

2

これは実際にRedux FAQ on "where should my business logic live?"で対処されている一般的な質問の特定のケースです。その回答を引用する:

ここで問題は、アクションクリエイターに何を入れて、減量する人が脂肪と細いアクションオブジェクトの間の選択であるかです。アクションクリエータにすべてのロジックを置くと、基本的に状態への更新を宣言するファットアクションオブジェクトになります。レデューサーは純粋な、愚かな、追加、これを削除し、これらの機能を更新します。彼らは簡単に構成することができます。しかし、あなたのビジネスロジックの多くはそこにはありません。あなたがリデューサーにもっと多くのロジックを置くと、素敵なシンアクションオブジェクトとなり、データロジックの大半は1か所で処理されますが、他のブランチからの情報が必要な場合があるため、あなたは大型の減速機または減速機で終わります。減速機は国家の上から上がってくるからです。

あり、多くの作業は、データを準備し、フォーマットしない「アクションの作成」側のロジックを持つと間違って何も(それはコンポーネント、サンク、サガ、またはミドルウェアであるかどうか)いない、と単純に減速を持ちますアクションに含まれていたものを保存します。反面、リデューサー側でより多くのロジックを持つことは、タイムトラベルデバッグが実際のコードをより多く実行し、動作を編集して再試行する機会が増えることを意味します。

全体として、あなたがしていることが完全に合理的であるように聞こえます。

関連する問題