ストアは、アクションによってトリガーされたイベントを処理し、リスニング ビュー コントローラーに変更を送信することになっています。
たとえば、リクエストのコールバックで、またはストアの登録済みコールバックで直接、アクションをトリガーしても問題ありませんか。
例えば:
AppDispatcher.register(function(payload) {
switch(payload.action.actionType) {
case Constants.PAGE_CHANGED:
ActionCreator.fetchNewData();
break;
case Constants.FETCH_DATA:
// save data
Store.emitChange();
break;
}
});
このようなコードは Flux アーキテクチャで「正しい」ものですか?
ありがとうございました !
====== コメントに基づく更新:
これは、「これをしなければならない。どうすればよいか」という問題ではなく、「これがやり方であるべきだ」ということです。そして、答えは...あなたの選択だと思います。
コメントにいくつかの便利なリンクが追加されました。ありがとうございます。
私の理解は次のとおりです。
Flux アーキテクチャでは、ビューはアクションをトリガーする唯一のものであるべきです。アクションクリエーターに非同期リクエストを入れると、コールバックが新しいアクションを起動するはずです。
Flux の手順に従わない場合、ストアは非同期リクエストを処理することもできますが、コールバックがデータを直接処理せず、代わりに別のアクションをトリガーするようにしてください。これに関する Bill Fisher の回答を参照してください。
いずれにせよ、Ben Alpert の回答が述べたように、ユーザー アクションに対して複数のアクションを作成できます (例: REQUEST_START、REQUEST_SUCCESS、REQUEST_ERROR)。これにより、リクエストのさまざまな段階にフックできます。
これに関する更新は大歓迎です。