7

ストアは、アクションによってトリガーされたイベントを処理し、リスニング ビュー コントローラーに変更を送信することになっています。

たとえば、リクエストのコールバックで、またはストアの登録済みコールバックで直接、アクションをトリガーしても問題ありませんか。

例えば:

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)。これにより、リクエストのさまざまな段階にフックできます。

これに関する更新は大歓迎です。

4

1 に答える 1