无法使用 alt 操作触发 alt 存储 (Flux)

Cannot trigger alt store with alt action (Flux)

我正在使用 goatslacker/alt 开发一个 flux 前端程序。我在触发商店更新操作时遇到问题。侦听器未按预期运行。

我现在正在处理的代码非常复杂。我将尝试将我的问题简化为以下代码。我希望它最后记录 "Hello World! msg: Some message" 。显然,听众 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();

我的问题是什么?

简而言之,如果您在操作方法中添加 this.dispatch(),商店只能捕获操作。因此,您应该 运行 this.dispatch()(带或不带参数),而不是该方法中的 return 任何内容。侦听器将是 运行,参数为 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");