【问题标题】:Not triggering React event correctly未正确触发 React 事件
【发布时间】: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


【解决方案1】:

我也遇到了同样的问题。就我而言,声明组件时是我的错:

global.FilmList = React.createClass({
    mixins: [Reflux.connect(filmListStore, "list")],
    componentDidMount: function() {
        this.listenTo(filmListStore, this.eventChange);
    },
    render: function() {

我已经设置了 mixins 和 this.listenTo() 方法。我已经删除了 this.listenTo() 并且这解决了问题

【讨论】:

    【解决方案2】:

    自己花了一个小时试图解决这个问题。

    就我而言,我告诉 Reflux.ListenTo 触发的方法不存在。

    原来如此

    Reflux.listenTo('FooStore', 'onUserDeleted')
    

    我在商店里没有 onUserDeleted: function() { }。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多