我正在开发一个 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 。
此问题可能是您没有将依赖项数组传递给 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
}
}
},[])
如果这不是问题,您将需要提供更多有关设置状态的方式和位置的上下文。