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

标签 javascript node.js reactjs 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()(带或不带参数)。监听器将使用 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");

关于javascript - 无法使用 alt 操作触发 alt 存储 (Flux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31218487/

相关文章:

javascript - 选择一个选项时不发送文本框值

javascript - 对对象键/值使用多个映射类型。只需要联合的一个值?

node.js - 如何在nodejs中返回响应?

reactjs - 如何在 React Native 中使用断点进行调试

javascript - 无法在reactjs的子组件中读取getInitialState和ComponentDidMount中的 Prop 数据对象

javascript - 带有方形单元格的 HTML 表格适合屏幕高度

javascript - 如何在 javascript 中停止 window.setInterval?

node.js - SQLite:选择和删除

javascript - 如何使用 JS 每小时运行一次代码?

javascript - 在 native react 中以不同方式对齐两个 child