Подписка на 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