У меня несколько магазинов Flux. Теперь ясно, что все они расширяют один и тот же синглтон эмиттера событий. Это привело к тому, что события в магазинах конфликтовали друг с другом (даже самые распространенные, emitChange
). Кажется, что нет никакой разницы между выполнением Store1.getID()
и Store2.getID()
, потому что магазины кажутся одним большим объектом, вытянувшимся из любого другого магазина. Что я делаю не так?
У меня уже давно есть эта проблема, и она сводит меня с ума. Я уверен, что у этого есть простой ответ, который мне не хватает. Это одна из причин, по которой я жду реле и GraphQL.
EDIT: как все мои магазины выглядят в коде.
var Events = require('events'), extend = require('deep_extend'),
EventEmitter = Events.EventEmitter,
CHANGE_EVENT = 'change';
var SomeStore = extend(EventEmitter.prototype, {
someGetter: function(){
return _someVar;
},
dispatchToken: AppDispatcher.register(function(action) {
switch(action.type) {
case 'SOME_ACTION':
_someVar = 'someValue'
break;
default:
return true;
}
SomeStore.emitChange();
return true;
})
});
return SomeStore;