收到 WebSocket 消息时,React 状态重置为默认值

问题描述 投票:0回答:1

我正在开发一个 React 项目,其中使用 WebSocket 来接收实时更新。但是,我遇到一个问题:每次收到 WebSocket 消息时,组件的状态都会重置为默认值。我一直在尝试调试这个问题,但无法弄清楚为什么会发生这种情况。提前感谢您的帮助:)。

useEffect(()=>{
   const connect = ()=>{
       //code for connectiong to websocket
       ws = new websocket....

       ws.onmessage() = (message)=>{
         //here state is always initial 
         //state change code

         //after state change code it changes but when new message arrives its in the initial state 
        }
   }
},)

最初我使用了 useState 钩子,之后我在这两种情况下都使用了 useReducers 。

javascript reactjs react-hooks websocket
1个回答
0
投票

此问题可能是您没有将依赖项数组传递给 useEffect 挂钩,当未添加依赖项数组时,useEffect 将在每次重新渲染时运行,这可能会导致状态更新。您可以将空数组传递给 useEffect 以避免运行它。

useEffect(()=>{
   const connect = ()=>{
       //code for connectiong to websocket
       ws = new websocket....

       ws.onmessage() = (message)=>{
         //here state is always initial 
         //state change code

         //after state change code it changes but when new message arrives its in the initial state 
        }
   }
},[])

如果这不是问题,您将需要提供更多有关设置状态的方式和位置的上下文。

© www.soinside.com 2019 - 2024. All rights reserved.