2016-04-15 15 views
0

クリーンな反応のアプリケーション設計の観点からは、コンポーネント設定ツリーに含まれていないモジュールにアプリケーション設定を渡す方法は間違いありません。アプリケーション設定をストアに渡す方法

など。私はREST APIに接続するので、コンポーネントにホスト名を伝える必要がありますが、ストアにも - 私は逆流を使用しています。

設定をコンポーネントに渡すことは、コンテキストを使用して簡単に行うことができますが、ストアはその一部ではないため、最もクリーンな方法は何ですか?その私はすべての店のリスナーにそれを受信するには、アクションにコンポーネントから設定を渡す

  • はこれまでのところ、私はこれらのアプローチを検討してください。

  • 私のindex.jsに初期化され、私の店

で使用することができ、いくつかのDIコンテナを使用しての両方が私のために理想的であるように思われません。どんなヒントもありがとう!

答えて

1

ほとんどの場合、アプリケーション設定を保存しないでください。

アプリケーションを、パラメータとして状態を受け取り、ビューを返す何らかの関数のように考える必要があります。アプリケーションの状態の変更(通常)により、結果のビューが変更されます。フラックスストアはあなたがこの状態を維持している方法です。 APIホスト名は、アプリケーションに影響を与えるものではありません。これは、アプリケーションが正しく動作するために知っておく必要のある情報ペイロードです(設定ではなく設定)。したがって、情報のペイロードとして保持する必要があります。モジュール、クラス、グローバル変数、DIのようなものであれば、作業に役立つものは何でも考えることができます。

私は通常、すべての設定で個別のモジュールエクスポートオブジェクトを作成します。次のようなものがあります。

const config = { 
    api: { 
    hostname: 'localhost', 
    port: 3000 
    } 
    // ... 
}; 

export default config; 

そして、それをインポートするだけです。以下のような何か:

import config from "../config"; 

const api = new API(config.api); // just for example 

しかし、あなたが本当にUIに影響を与えることができる設定のいくつかの種類で作業する必要がある場合(例では、ポップアップを表示する遅延があり、それの例では、我々はこの遅延を変更すると、ユーザーのに依存して考慮すれば、さらに良くすることができアクション)を作成する必要がありますSettingsストアし、定期的なフラックスストア(変更を購読すると、アクションなどで変更)のようにそれで動作します。

+0

あなたのご意見ありがとうございます!私は設定が状態であってはならないことに同意します。しかし、関数型プログラミングの考え方に従えば、私はストアに構成を注入したいが、外部のコンテキストからインポートすることはできない。だから、私は依存性注入が最善の選択肢だと思う。 – schneck

関連する問題