无法使用 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");
我正在使用 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");