首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过alt操作触发alt存储(Flux)

无法通过alt操作触发alt存储(Flux)
EN

Stack Overflow用户
提问于 2015-07-04 08:10:10
回答 1查看 1.6K关注 0票数 1

我正在用山羊腿/丙氨酸氨基转移酶开发一个流量前端程序。我有问题触发存储更新与行动。听者并没有像我预期的那样发挥作用。

我正在处理的代码现在相当复杂。我将尝试将我的问题简化为以下代码。我希望它最终会记录"Hello!msg:一些信息“。显然,侦听器hello()甚至没有运行。

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

代码语言:javascript
复制
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代码包括:

代码语言:javascript
复制
import Alt from 'alt';
module.exports = new Alt();

我的问题是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-04 16:34:24

简而言之,存储只能在操作方法中添加this.dispatch()时才能捕获操作。因此,与其在该方法中返回任何内容,不如运行this.dispatch() (有参数还是不带参数)。侦听器将使用this.dispatch()的参数运行。

更正后的版本:

代码语言:javascript
复制
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");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31218487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档