Laravel Echo在卸载并再次安装React组件后停止监听事件

时间:2019-12-24 09:48:44

标签: reactjs laravel websocket pusher laravel-echo

我已经连接了Laravel Echo。我使用Pusher和ReactJS并将到专用通道的连接设置为componentDidMount()方法:

componentDidMount() {
    let channelName = 'channel.12345';
    let eventName = '.RoshamboResults.54321';

    Echo.private(channelName)
      .listen(eventName, data => {
        console.log('Socket', data);
      });
  }

它可以工作,直到我转到另一条路线为止,因此该应用程序会卸载该组件。当我返回并等待通道中的其他消息时,我只能在Inspect-> Network-> WebSockets中看到它,而在控制台日志中却看不到它。所以JS停止听了。

1 个答案:

答案 0 :(得分:0)

也许您应该在组件的componentWillUnmountcomponentDidMount生命周期中放置一个控制台,再次执行这些步骤,并查看在路由时是否确实卸载了该组件,并在何时安装了该组件。你回来。

可能您的组件根本没有卸载,因此您的componentDidMount可能只工作了一次。我认为这很可能是问题所在。

深入研究反应生命周期也可能对您的问题有所帮助,如果我上面说的是这种情况。我发现这是一篇有关生命周期的说明。 react文档也相当不错。希望这可以帮助。 :)

https://levelup.gitconnected.com/componentdidmakesense-react-lifecycle-explanation-393dcb19e459