我有一个ReactJS客户端通过Socket.io与NodeJS服务器连接 . NodeJs服务器将充当从Redis向客户端发送消息的中间件 .

ReactJS客户端将向NodeJS服务器发送它想要在Redis中订阅的订阅 Channels .

我能够将订阅 Channels 发送到服务器,并让服务器根据客户端订阅的 Channels 通过套接字发送Redis消息 .

但是,我无法在客户端收到该消息 . 因为有多个客户端,所以我设置套接字客户端来监听所选通道,如下所示:

componentDidMount() {
    this.socket.on(this.state.channel, data => console.log(data));
}

用户在按钮点击时选择要订阅的 Channels 后设置 Channels 状态 .

handleChannelSelect = channel => e => {
        this.socket.emit('Channel', channel);
        this.setState({channel: channel})
};

默认状态是:

this.state = {
    channel:""
}
this.socket = SocketIOClient("http://localhost:8080")

有没有办法在选择 Channels 后才能调用componentDidMount?或者,如何在选择 Channels 后更改客户端正在侦听的事件?