不能用alt动作触发alt存储(Flux)

我正在用goatslacker / alt开发stream量前端程序。 我有问题触发商店更新与行动。 听众不像我预料的那样运作。

我正在处理的代码现在非常复杂。 我会尽量简化我的问题到下面的代码。 我期待它最后login“Hello World!msg:Some message”。 显然,listener hello()甚至没有运行。

这是要运行的主要JavaScript(ES6)文件:

 import alt from './alt'; class DummyActionsProto { sayHello(msg) { console.log("sayHello", msg); return {msg} } } var DummyActions = alt.createActions(DummyActionsProto); class DummyStoreProto { constructor() { this.bindListeners({ hello: DummyActions.sayHello, }); this.state = { items: [], }; } hello(msg) { console.log("Hello World! msg: "+msg); } } var DummyStore = alt.createStore(DummyStoreProto, 'DummyStore'); // trigger the action DummyActions.sayHello("Some message"); 

普通的alt.js代码包括:

 import Alt from 'alt'; module.exports = new Alt(); 

我的问题是什么?

简而言之,只有在action方法中添加this.dispatch() ,商店才能捕获该操作。 因此,不要在该方法中返回任何内容,您应该运行this.dispatch() (带或不带参数)。 侦听器将使用this.dispatch()的参数运行。

修正版本:

 import alt from './alt'; class DummyActionsProto { sayHello(msg) { console.log("sayHello", msg); this.dispatch(msg); // **instead of return, you should do this** } } var DummyActions = alt.createActions(DummyActionsProto); class DummyStoreProto { constructor() { this.bindListeners({ hello: DummyActions.sayHello, }); this.state = { items: [], }; } hello(msg) { console.log("Hello World! msg: "+msg); } } var DummyStore = alt.createStore(DummyStoreProto, 'DummyStore'); // trigger the action DummyActions.sayHello("Some message");