最近在使用React的时候涉及到了组件之间的通信。尝试了一下pubsub-js这个库,感觉是真的香,下面总结一下。
Source: Pixabay
组件的github官网:https://github.com/mroderick/PubSubJS
安装:
npm install --save pubsub-js
或者运行:
yarn add pubsub-js
其核心概念和所有消息订阅/发布组件没有太大区别,无非就是订阅/发布的过程。
由于这个库和React没有必然的联系。下面就通过普通的JS来演示如何使用这个库。
首先是订阅部分:
import PubSub from 'pubsub-js'
PubSub.subscribe('SubmissionMessages', (msg, data) => {
// 这里添加收到消息后的处理逻辑
}
如果要发布消息的话,
import PubSub from 'pubsub-js'
PubSub.publish('SubmissionMessages', data)
无论是订阅还是发布,这里的data可以是简单的字符串,也可以是一个对象。
感觉有了这个库之后,对于那种有着复杂结构(多层父子及兄弟)的组件,彼此之间传递消息就会方便很多。只不过需要注意的是,如果要传递到不同的消息队列中,要管理好消息的名字,否则把消息发错队列就不好了。同时,对于不再使用的订阅者,需要取消订阅。
当然,对于过于复杂的组件间消息传递,使用redux或者Context应该更为合适。但对于较为简单的应用,似乎使用redux有些过于笨重了。这个时候,pubsub-js应该算是更好的选择。