与React Flux调度员进行“私密”通信

时间:2016-02-29 14:07:58

标签: reactjs dispatcher flux

我正在尝试决定处理商店和可能存在于多个地方的反应组件之间的“私人”通信的最佳方式。我有两个相同组件的实例,这两个实例都需要与同一个商店进行通信。但是,他们需要独立行事。因此,当一个人收到错误消息时,另一个人不应该显示它。

问题是,因为我的商店和我的调度员都是单身人士,所以组件的两个实例都在收到消息。两个实例都在监听商店的事件,所以如果这是一个单例,两者都会收到错误事件。

并且,两个实例都使用相同的调度程序,所以即使我有多个商店实例,它们都会同时收到相同的消息,所以它们仍会对它做出反应并发出响应

我一直在四处寻找,但我没有看到太多关于处理这个问题,有没有人遇到过这样的事情?我原以为我可以在动作中传递对调用者的引用,将其移动到事件响应中,然后在组件中再次检查它,如下所示:

// my_component.js
import dispatcher from 'dispatcher';
import myStore from 'my_store';
const myComponent = React.createClass({
    handleNewValue: function(){
        dispatcher.dispatch({actionType:'check_error', value: 'value', caller: this});
    }
    componentWillMount: function(){
        myStore.on('show_error', function(message){
            if (message.caller === this){
                doThing(message.error);
            }
        }
    }
    ...
}

// my_store.js
import dispatcher from 'dispatcher';
...
dispatcher.register(function(payload){
    if (actionType === 'check_error'){
       this.trigger('show_error', {error: 'is_bad', caller: payload.caller});
    }
}

但是对于复杂的系统来说,这似乎可能会失控。它似乎比我想要的手动更多。任何想法都将不胜感激!

0 个答案:

没有答案