我正在尝试决定处理商店和可能存在于多个地方的反应组件之间的“私人”通信的最佳方式。我有两个相同组件的实例,这两个实例都需要与同一个商店进行通信。但是,他们需要独立行事。因此,当一个人收到错误消息时,另一个人不应该显示它。
问题是,因为我的商店和我的调度员都是单身人士,所以组件的两个实例都在收到消息。两个实例都在监听商店的事件,所以如果这是一个单例,两者都会收到错误事件。
并且,两个实例都使用相同的调度程序,所以即使我有多个商店实例,它们都会同时收到相同的消息,所以它们仍会对它做出反应并发出响应
我一直在四处寻找,但我没有看到太多关于处理这个问题,有没有人遇到过这样的事情?我原以为我可以在动作中传递对调用者的引用,将其移动到事件响应中,然后在组件中再次检查它,如下所示:
// 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});
}
}
但是对于复杂的系统来说,这似乎可能会失控。它似乎比我想要的手动更多。任何想法都将不胜感激!