9

ドキュメントを読んでも、Reflux 非同期アクションの仕組みがよくわかりません。特に、非同期アクションが完了したときに何かをトリガーする必要があります。

コンポーネントの 1 つで、非同期アクションの完了をリッスンしてから、ビューに移行したいと考えています。

mixins: [State, Navigation, Reflux.listenerMixin],

componentDidMount() {
  this.listenTo(actions.loadProject.completed, ()=>{this.transitionTo('info')});
},

次のようにアクションを作成しました。

var actions = Reflux.createActions([
  "someSyncAction",
  "anotherSyncAction"
]);

actions.loadProject = Reflux.createAction({
  "loadProject": {children: ['completed','failed']},
});

そして私のprojectStoreには次のようなものがあります:

 onLoadProject(id) {

    var url = '/api/projects/' + id;
    io.socket.get(url, (body, jwr) => {

      if(jwr.statusCode !== 200){
        console.error('Failed to load project', id, body);
        return actions.loadProject.failed();
      }

      var p = body;
      debug('loaded project', id, p);
      this.project = p;
      this.trigger(p);
      actions.loadProject.completed();
    });
  },

しかし、actions.loadProject.completed は関数ではないため、上記のコードは機能しません。正しいアプローチは何ですか?

4

3 に答える 3

1

私はRefluxを初めて使用します。これが私がまとめたデモです。それが100%適切かどうかはわかりませんが、役立つかもしれません - http://jsbin.com/roqito/2/edit

于 2015-02-19T15:28:49.863 に答える
0

ドキュメントから:

// Create async action with `completed` & `failed` children 
var makeRequest = Reflux.createAction({ asyncResult: true });
于 2015-04-08T16:21:30.910 に答える