Подписка на Postal.js не получает сообщение от другого реагирующего компонента

У меня на одной странице работают два развязанных компонента, и я хотел бы использовать 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 ответа

Решение

Оказывается, наличие двух моих компонентов в разных пакетах веб-пакетов вызвало проблемы со связью между ними.

Объединение двух компонентов решило проблему.

Я попытался создать минимальный фрагмент кода, чтобы установить связь между двумя компонентами. И мне удалось получить данные о подписывающем компоненте.

Вы можете сослаться на этот фрагмент, https://codesandbox.io/s/kxqw6npm05

Другие вопросы по тегам