编辑:
我现在觉得很傻。 问题是我在代码中的任何地方都不需要我的商店,所以它从未真正被创建。
当我调用它正在监听的操作时,我的 refluxjs 商店没有调用它的回调。相关代码如下:
Action :
module.exports = require("reflux").createActions([
"createUser"
]);
商店:
var userActions = require("../actions/user-actions");
module.exports = require("reflux").createStore({
listenables: userActions,
onCreateUser: function() {
console.log("onCreateUser called", arguments);
}
});
触发 Action 的组件:
var React = require("react"),
userActions = require("../../actions/user-actions");
var Login = React.createClass({
getInitialState: function() {
return {
name: ""
};
},
updateName: function(event) {
this.setState({
name: event.target.value
});
},
// Action gets called here
submit: function(event) {
event.preventDefault();
console.log("Creating user", this.state.name);
userActions.createUser(this.state.name);
},
render: function() {
var name = this.state.name;
return (
<div className='login'>
<form onSubmit={this.submit}>
<input value={name} onChange={this.updateName} />
<button>Create</button>
</form>
</div>
);
}
});
当我在 Login
组件中提交表单时,submit
方法被调用而没有抛出任何错误,但是我的 onCreateUser
方法商店永远不会被调用。
回流 github 页面上的示例看起来相当简单,这与在商店中使用 listenables
属性的示例几乎完全相同。
如有任何帮助,我们将不胜感激。
最佳答案
由于商店通常连接到一个组件,并且以这种方式被要求,您可以创建一个只注销到控制台的测试组件:
var store = require('path/to/your/store'),
React = require('react'),
Reflux = require('reflux');
var ConsoleLogComponent = React.createClass({
mixins: [
Reflux.listenTo(store, "log")
// you may add more stores here that calls the log method
],
log: function() {
console.log(arguments);
},
render: function() {
return <div />
}
});
然后,您可以将此控制台组件放在任何地方,只需对商店进行健全性检查即可。
关于javascript - Reflux 存储不听 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26870840/