gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:46:03 38 4
gpt4 key购买 nike

我正在使用 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/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com