我Socket.io在react應用程式中使用。我想馬上做第一個請求應用程式加載后,所以我把我的第一次emit在useEffect鉤:
useEffect(() => {
socket.emit("getCollectionsAndVolumes", socket.id);
}, []);
但它不起作用。它不做任何請求。所以我意識到一個問題是因為套接字可能還沒有連接,所以我放了一點timeout:
useEffect(() => {
const initialGetTimeout = setTimeout(() => {
clearTimeout(initialGetTimeout);
}, 1000);
})
它有效,但這只是一種解決方法,我應該如何在應用加載后立即觸發第一個請求?有沒有其他方法可以做到這一點React?
uj5u.com熱心網友回復:
添加一個在連接套接字時更改的引數作為 useEffect 的依賴項React.useEffect(()=>{},[dependencies]);,如果沒有這樣的引數,則嘗試創建一個狀態來維護套接字是否已連接。
uj5u.com熱心網友回復:
我通過使用解決了這個問題:
socket.on("connect", () => {
socket.emit("getCollectionsAndVolumes", socket.id);
});
所以當它true立即執行請求時
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/361609.html
上一篇:使用python在命令提示符下從用戶那里獲取多個輸入
下一篇:我想獲得給定地址的所有交易
