Postal.js订阅未接收来自其他反应组件的帖子

时间:2018-03-14 02:11:29

标签: javascript reactjs webpack message-bus

我在一个页面上运行了两个分离的组件,并希望使用Postal.js在单击另一个时发送消息。

点击第一个组件后,它会发布帖子:

postal.publish({
  channel: 'carts',
  topic: 'item.add',
  data: {
    quantity: newQuantity
  }
});

然后在第二个组件中,我订阅了componentDidMount()中的那个频道:

postal.subscribe({
  channel: 'carts',
  topic: 'item.add',
  callback: this.handleStorageChange.bind(this)
});


当我向订阅组件添加窃听时,它显示该频道已成功订阅但从未显示其他组件的帖子:

{"channel":"postal","topic":"subscription.created","data":{"event":"subscription.created","channel":"carts","topic":"item.add"},"timeStamp":"2018-03-14T01:59:38.309Z"}

当我向发布组件添加窃听时,它显示邮件已发布:

{"channel":"carts","topic":"item.add","data":{"quantity":34},"timeStamp":"2018-03-14T01:59:41.844Z"}

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

我尝试创建一个最小片段,以便在两个组件之间进行通信。我能够收到订阅组件的数据。

您可以参考此代码段https://codesandbox.io/s/kxqw6npm05

答案 1 :(得分:0)

事实证明,将我的两个组件放在不同的webpack包中会导致两者之间的通信出现问题。

将两个组件包装在一起解决了这个问题。