2016-09-20 11 views
2

これは反応に関する特定の質問ではありません。私はAurelia/AngularjsでFluxを実装することを考えています。Fluxでディスパッチャが必要なのはなぜですか?

フラックスを読んでいる間、私はディスパッチャのステップの必要性を確信していません。コンポーネントがストアを直接呼び出してデータを更新および取得できないのはなぜですか?そのアプローチに何か問題はありますか?

たとえば、新しい車を作成したり、車を更新したり、車のリスト(CRUD API上の薄い層)を取得できるCarStoreがある場合は、直接呼び出してリストを取得/更新することができますコンポーネントの店舗です。ストアはシングルトンなので、リストが更新されるたびに、car-gridは新しいアイテムを自動的に取得する必要があります。このシナリオでディスパッチャを使用する利点は何ですか?

答えて

0

ディスパッチャが重要な理由は、hereです(なぜディスパッチャが必要なのかのセクションを参照してください)。私はそれを見て、アイデアは基本的に同期的な方法で1つのコールバックが完了するまで、さまざまなストアにアクセスすることができるということです。これはwaitForメソッドのおかげです。は、店舗での処理の処理が完了するのを待つことができます(またはそれ以上)。良い例はin the docsです。たとえば、アプリケーションが大きくなり、そのCarStoreだけではなく、CarStoreのアップデートに依存する別のストアがある場合があります。

+0

なぜコンポーネントでその依存関係を管理できないのですか?たとえば、お互いに依存する複数のストアを更新する場合は、約束を使用することができます。 – Sayem

+0

たとえば、 'CartStore'に追加されたときに' WishlistStore'から車を取り除く必要があります。あなたのコンポーネントからは、約束を返す 'CartStore'に車を追加することができ、成功したら' WishlistStore'を更新します。 – Sayem

+1

あなたはそういうことができると思いますが、Fluxはあなたにディスパッチャーと機能を提供します。極端な場合、純粋なJavaScriptを使用してすべてを行うことができます。フレームワークは、簡単に、かつ/またはより整理しやすくするためのツールとパターンを提供します。 –

関連する問題