0

我在一个页面上运行了两个解耦组件,并且希望在单击一个到另一个时使用 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"}

我在这里做错了什么?

4

2 回答 2

1

我尝试创建一个最小的片段来在两个组件之间进行通信。而且我能够收到有关订阅组件的数据。

你可以参考这个片段,https://codesandbox.io/s/kxqw6npm05

于 2018-03-14T04:30:05.663 回答
0

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

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

于 2018-03-14T13:16:24.033 回答