我有一个reactjs客户端,它连接到websocket服务器,但是当我试图在一个效果钩子之外初始化它时,websocket对象是未定义的,但是当它在一个效果钩子中时它会初始化它。
就像这样:
effect(()=>{
connection = new WebSocket(url)
//do some stuff
})问题是,我想根据reactjs应用程序中发生的事件发送东西。
effect(()=>{
connection.send(messages)
},[messages])在这一点上,连接是未定义的,尽管当时正在建立连接,但我只能假设,由于我必须在浏览器中使用本机WS,所以我必须在其他地方初始化websocket,但我不知道在哪里
发布于 2021-12-20 21:03:50
维护连接的状态变量。只创建一次并具有有效的紧密连接。(要运行一次的空依赖数组)
const [connection, setConnection] = useState(null);
useEffect(() => {
connection = new WebSocket(url);
setConnection(connection);
return () => connection.close()
}, [])
useEffect(() => {
connection.send(messages)
}, [messages])https://stackoverflow.com/questions/70427715
复制相似问题