ドキュメントを読んでも、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 は関数ではないため、上記のコードは機能しません。正しいアプローチは何ですか?