【发布时间】:2015-03-26 13:49:06
【问题描述】:
我有一个 Reflux 商店,它在触发操作时似乎会导致错误:
var taskStore = Reflux.createStore({
listenables: [taskActions],
init: function(){
this.tasks = [];
this.index = {};
this.trigger(this.tasks);
},
onLoad: function(arr){
var idx = {}
arr.forEach(function(ele){
idx[ele.id] = ele
});
this.tasks = arr;
this.index = idx;
this.trigger(arr);
}
});
当调用load 操作并触发onLoad 方法时,它在this.trigger 方法上失败,Chrome 显示错误为未捕获的类型错误:无法读取未定义的属性“应用”
调用堆栈最终将我带到了 Reflux 监听方法:
listen: function(callback, bindContext) {
bindContext = bindContext || this;
var eventHandler = function(args) {
callback.apply(bindContext, args);
}, me = this;
this.emitter.addListener(this.eventLabel, eventHandler);
return function() {
me.emitter.removeListener(me.eventLabel, eventHandler);
};
},
这是 callback.apply 中的回调,但由于某种原因,该回调似乎未定义。
我显然做错了什么来触发如此严重的错误,但我不知道是什么。谁能告诉我我在商店做错了什么?
调用 store 的代码是这样调用的:
var App = React.createClass({
mixins: [
Reflux.connect(taskStore,"tasks"),
Reflux.connect(taskIndex, "index"),
],
...
【问题讨论】:
-
调用
listen的代码是什么样的?我敢打赌你没有传入回调...当我忘记传入this._onChange时,我收到了这个错误here -
调用listen的代码使用了Reflux.connect mixin。我已将其添加到问题中。
-
这可能是一个错误,所以我在issue tracker 上做了一个简短的说明。如果您有任何其他信息,例如您正在使用的反流版本和反应,请在那里告诉我。
标签: javascript flux refluxjs