为什么反应JS钩子websocket onmessage重置状态?

时间:2020-07-13 22:49:44

标签: javascript reactjs websocket react-hooks

我正在努力在ReactJS中使用Web套接字。

我已遵循以下解决方案:https://stackoverflow.com/a/60161181/12962511

此解决方案效果很好!

但是,我想知道为什么onmessage在useEffect中。

我在useEffect中尝试了onmessage [],它是componentDidMount。此结果重置了我的状态,但没有从头开始启动函数,因为在这种情况下未触发useEffect和[]。

所以我的问题是:

  1. 在useEffect中使用[]或只在useEffect中放置onmessage之间的区别。
  2. 在React Hooks websocket中使用useRef的必要性(我尝试了两种方法,并且在网络控制台上看起来也是如此。)-我知道useRef阻止了websocket的每次重新渲染。

我整天都坚持这个问题。 :( 请帮助我。

非常感谢您!

1 个答案:

答案 0 :(得分:1)

  1. useEffect无依赖项将在每次渲染时触发。由于您只需要订阅一次,因此订阅应该为空[]
  2. 在您的示例中,useRef仅用于暂停通过websocket收听消息。如果您不需要此逻辑,则可以不使用它。