フラックスパターンを理解する


12

私は実際にフラックスのパターンを研究していますが、ストアに関して理解できないことがあります。

彼らは正確に何ですか?

私は多くの記事を読みましたが、それはドメインに関係しているようです。

これは、API呼び出しまたはバックエンド呼び出しに関連する「抽象的な」部分であることを意味しますか?

私にはあまりはっきりしていません。

編集:それは角度の工場と同じものでしたか?リモートデータの取得、ビジネスタスクの作成、アプリの状態の保存(現在のユーザーの接続など)


1
正確にあなたが話していることへのリンクが役立ちます。この「フラックスパターン」という意味ですか? fluxxor.com/what-is-flux.html
DougM


Fluxは、すべてのデータが最初にディスパッチャを通過するという制約を持つパブリッシュ/サブスクライブパターンに過ぎません。データが逆行しないことを保証します(そして混乱を引き起こします)。「ストア」、「アクション」などのようなものは、システムのコンポーネント、および渡されるデータを表す別の方法です。
kiwicomb123

回答:


23

では、ステップバイステップから説明させてください

1 Fluxとは何ですか?

  • パターン
  • 集中ディスパッチャ
  • 単方向データフロー
  • リストアイテム

彼らもそれをフラックスと呼んでいます。

フラックス実装

  • Facebookのフラックス
  • Alt
  • 還流
  • Flummox
  • NuclearJS
  • 融通性

ここに画像の説明を入力してください

Fluxとのチャット

反応:ちょっとアクション、誰かがこの「コースを保存」ボタンをクリックしました。

アクション:ありがとう、React!アクションクリエーターをディスパッチャーに登録したので、ディスパッチャーは気にするすべてのストアに通知する必要があります。

ディスパッチャー:コースの保存を気にする人を見てみましょう。あ!ストアがコールバックを登録しているように見えるので、彼女に知らせます。

ストア:こんにちはディスパッチャ!更新していただきありがとうございます!送信したペイロードでデータを更新します。次に、気にするReactコンポーネントのイベントを発行します。

React:おお!ストアからの光沢のある新しいデータ!これを反映するためにUIを更新します!


フラックスAPI


register(function callback) –「ちょっとディスパッチャ、アクションが発生したら実行してください。-お店"

unregister(string id) –「ちょっとディスパッチャ、このアクションについて心配するのを止めてください。-お店"

waitFor(array ids) –「最初にこのストアを更新します。-お店"

dispatch(object payload) -「ディスパッチャよ、このアクションについてストアに伝えてください。-アクション"

isDispatching() –「現在、コールバックのディスパッチに忙しい」

だから私たちの心に浮かぶ質問は

Fluxはパブリッシュ/サブスクライブモデルですか?

そうでもない。

次の2つの点で異なります。

1.すべてのペイロードは、登録されているすべてのコールバックにディスパッチされます。

2.コールバックは他のコールバックを待つことができます

概要

Fluxは単方向データフローのパターンですアクションはイベントをカプセル化しますDispatcherはコールバックを保持する中央ハブですストアはアプリの状態を保持します多くの実装


私の最初の問題は、状態によってアプリケーションがリモートAPIエンティティの異なるデータを持つことができることです
。-

州の許可とはどういう意味ですか?EMITの変更は、それがビューに反応して、再度状態変化法と呼ばれると呼ばれますと呼ばれる場所に
Dhavalパテル

フラックスでアプリケーションを構築することを認めます。APIを扱っているので、ストア内にデータを保存します。ユーザーがリモートデータを変更した場合はどうなりますか?私は、クライアントとサーバの両方の違いがあります
mfrachet

今どこで私は理由を見つけることができます。すべてのディスパッチャとストアが表示を転送する場合、ビューを直接更新するアクションを実行できないのはなぜですか。仲買人がいる理由
ムハンマドウメル

@MuhammadUmer:ディスパッチャは、アプリケーションおよびストアするためのものであるがそのように冗長仲介を導入し除去するために、アプリケーション内のコンポーネントに基づいている
Dhavalパテル

1

単純な例(https://github.com/facebook/flux/tree/master/examples/flux-todomvc/)を検索すると、「ストアはアプリケーション内の特定のドメインのアプリケーション状態を管理します。」つまり、アプリケーションの状態の状態に関するデータと、それを変更するすべてのコード。Dispatcherからの新しい更新があるたびに、すべてのストアがそれを確認し、それに応じてデータを更新する方法を決定し、データが変更されたことをビューに通知します。例では、ストアには「見えないスレッドリスト」(ディスパッチャが新しいメッセージの到着または古いメッセージが読み取られたことを通知し、ビューはメッセージスレッドをユーザーに表示する)や「現在の再生時間と状態。"

より技術的には、コールバックをDispatcherに登録して更新を受信し、データの状態が変化したときにビューに通知するフレームワークの中間層です。(その後、ビューはアクションをDispatcherに送り返す可能性があります。)それらが実装する抽象インターフェースがあり、各ストアはコールバックをDispatcherに登録し、イベントをビューにブロードキャストしますが、各ストアは具体的な方法で特定のドメインを表すようです。(反例はありますか?)


0

ストアは、アプリケーションの状態と複雑なロジックを格納するコードの領域です。それらの理由は、複数のビューが同じデータを使用する可能性がありますが、それらを異なる方法で表示したり、特定のドメインのすべてではなく一部のデータを表示したりすることです。たとえば、ユーザーがログインすると、名、姓、電子メール、写真、町、住所番号、電話番号などを受け取ります。この情報は別のビューに表示されます。ビュー間でデータを複製するのではなく、ユーザーのデータを保存するUserStoreという1つのストアを使用できます。これにより、格納されているロジックまたはデータを変更する必要がある場合に、「変更する場所を1つ」にすることでシステムが簡素化されます。ストアを使用する理由は他にもたくさんありますが、それは私が考える最も明白な理由です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.