2015-01-27 3 views
2

У меня есть магазин рефлюкс, который, кажется, вызывает ошибку, когда запуск действие:не вызывая Реагировать событие правильно

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 говоря об ошибке является Uncaught TypeError: не удается прочитать свойство «применить» в неопределенном

стек вызовов в конечном счете получает меня к рефлюкса слушать метод:

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, но похоже, что этот вызов по какой-то причине не определен.

У меня явно что-то не так, чтобы вызвать такую ​​глубокую ошибку, но я не знаю, что. Может ли кто-нибудь сказать мне, что я делаю неправильно в своем магазине?

Код, который вызывает магазин называет это так:

var App = React.createClass({ 
    mixins: [ 
     Reflux.connect(taskStore,"tasks"), 
     Reflux.connect(taskIndex, "index"), 
    ], 
... 
+1

Как выглядит код, вызывающий 'listen'? Я готов поспорить, что вы не проходите обратный вызов ... Я получил эту ошибку [здесь] (https://github.com/danesparza/GetTheFluxGist/blob/master/js/components/GistApp.react .js # L30), когда я забыл пройти в 'this._onChange' –

+0

Код, вызывающий прослушивание, использует Reflux.connect mixin. Я добавил его к вопросу. – emacsen

+0

Это может быть ошибка, поэтому я сделал короткую заметку об этом в [вопросительном трекере] (https://github.com/spoike/refluxjs/issues/219). Если у вас есть какая-либо другая информация, такая как версия рефлюкса, и ответьте, что вы используете, сообщите мне. – Spoike

ответ

3

У меня была та же проблема. В моем случае это была моя ошибка при объявлении компонента:

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

я установил как Примеси и метод this.listenTo(). Я удалил this.listenTo(), и это решило проблему.

2

Просто потратил час, пытаясь решить эту проблему самостоятельно.

В моем случае метод, который я сказал Reflux.ListenTo для запуска, не существовал.

Так я имел

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

и я не имел onUserDeleted: функция() {} в магазине.

 Смежные вопросы

  • Нет связанных вопросов^_^