【发布时间】:2020-05-02 23:54:49
【问题描述】:
我正在通过 socket.io 提取数据,但是在侦听来自服务器的传入消息时,我的状态没有正确更新。
我可以看到数据正在从套接字中正确提取(50 个请求对等秒),但 setQuotes 只是用从服务器返回的新项目替换现有项目(所以我的状态总是长度为 1)。
const [quotes, setQuotes] = useState([])
const subscribe = () => {
let getQuote = 'quote.subscribe';
socket.emit(getQuote, {});
socket.on('listenAction', function (msg) {
setQuotes([...quotes, msg]) // This just replace the entire state instead of adding items to the existing array
});
}
订阅 // 打开网络套接字流
【问题讨论】:
-
你可以试试 setQuotes(oldQuotes => [...oldQuotes, msg]) 吗?
-
你找到解决办法了吗,我也面临同样的问题?
标签: reactjs websocket socket.io react-hooks state