fluxが解決する課題と妥協

React.jsでだるいところ

React をアプリ全体に適用する場合でも、コンポーネントの階層が深いと同じ問題があります。状態を持つ上位のコンポーネントとその状態が欲しい末端のコンポーネントの間で、中間コンポーネントが自分と関係ないデータやイベントハンドラを下に伝える必要が出てくるからです。なので、結局コンポーネントの階層構造外に状態を持ちたくなります。

React.js 実戦投入への道

この問題への解決策がActionsとDispatcher

https://github.com/facebook/flux/raw/master/docs/img/flux-diagram-white-background.png

C#実装への応用案1

  1. 機能毎(対応するController単位とか。Controllerを置き換えるもの)で、 ActionCreator を作成する。
  2. 各Viewは対応する ActionCreator が持つevent(Actions)を発火するだけ
  3. ActionCreator のcallbackでModelを操作する

単純にControllerを置き換えるだけ

View -> ActionCreator ( -> Controller ) -> Model -> View

C#でflux実装を試みる際の注意

  1. dispatcherで依存管理をしようと思わない(制約)
  2. StoreからViewへの通知はデータバインド