2016-08-23 14 views
0

React Reduxフレームワークを使用してエンジニアリングアプリケーションを作成している最中に、負荷容量やその他のプロパティを計算する機能を持つ製品データベースを用意しています。関数をストアにロードし、レデューサー内の別の場所から関数を取得することは純度を損ない、レデューサーをテストするのがずっと難しくなることはお勧めしません。関数として数式を使用したReduxストア

還元剤をパラメータとして、またはそれに類するものとして、還元剤を店舗に入れずに純度を損なうことなく供給することができますか?

編集:

の各製品は、例えばジャック拡張と負荷容量との関係を説明するかもしれない機能を持っています。この関係は通常非線形であり、その容量をその拡張可能範囲に関連付けるグラフを有する。カーブフィッティングツールを使用して、これらのグラフをその範囲の関数に一致させました。私は、誰かが製品と拡張を選択したときに容量を取得し、その州の他の計算された負荷に対する適合性をチェックできるように、これらの機能を減速機で使用できるようにしたいと考えています。

+0

ユースケースの詳細を記述できますか?一般的なヘルパー関数があれば、それは「単一のソース」のようなものだと思います。しかし、すべてのデータベースレコードにユニークな機能がある場合、それは良い考えではありません。 – darkbaby123

答えて

1

いくつかの考え:そのような行動や店舗の状態の関数として非直列化可能な項目を含む

  • はい、間違いなくそれは一般的にタイムトラベルのデバッグを破るだろうという理由で、お勧めしません。 の場合、それはあなたにとって問題でない場合、です。 http://redux.js.org/docs/FAQ.html#organizing-state-non-serializableおよびhttp://redux.js.org/docs/FAQ.html#actions-string-constantsを参照してください。別のアプローチは、第三の選択肢が何をしている
  • ルックアップテーブルに数学関数を維持し、減速機で使用するための正しい数学関数をルックアップするために使用することができますアクションで関数名を含めることであろう
  • サンク・アクションクリエイターでの作業の多くを行い、計算結果をアクションに反映させます。
+0

現在、オプション2を検討しています。私は最初、減速機を不純にすることに躊躇しましたが、私は減速機に関数のデータベースをカレーすると、それはまだテスト可能であり、 'createStore(reducerWithDatabase(productDatabase))'のようなものです。 'var reducerWithDatabase =(productDatabase)=>(state、action)=> state' – Adam

+0

これはそれを行う方法の1つです。つまり、還元機能が他の機能をプロセスの一部として呼び出しても、それらの機能自体が純粋で副作用がない限り、「不純」にはなりません。数学関数は純粋な関数であるように思えるので、仕事をするように呼び出すことはうまくいくはずです。 – markerikson

関連する問題