PubSub

消息订阅与发布技术

yarn add pubsub-js
import PubSub from 'pubsub-js'

不必将信息一级一级的传递下去,可以实现任一组件之间通信

1、App 作为顶级 壳,不应该过多的涉及管理子组件之间的状态变化与通信问题,因此使用消息订阅与发布技术实现子组件之间的自发通信

Q:实现消息订阅与发布的库很多,你要选择哪个?

A:PubSub,历史悠久,应用广泛

何时订阅

A:在组件刚挂载上就要完成所有的订阅,一次性定义完成该组件所接收的所有消息类型。

componentDidMount() {
    this.updateHeaderData = PubSub.subscribe('updateHeaderData', (msgName, data) => {
        this.setState(data)
    })
}

如何发送消息

A:引入 PubSub 后调用其 publish 方法

PubSub.publish('updateHeaderData', {data: activeName})

如何取消订阅

A:引入 PubSub 后调用其 unsubscribe 方法,一般再组件卸载时调用

componentWillUnmount() {
    // 取消订阅
    PubSub.unsubscribe(this.updateHeaderData)
}