我以這樣的代碼運行程式:

useEffect(() => {
  if (!socket) return

  socket.on('newuserconnected', (username) => {
    console.log(connectedusers);
  });
}, [socket]);

這個程式在 socket.io 連接上初始化了一個 newuserconnected 事件的回調。

我假設這樣做後,每當我在服務器上調用該事件時,客戶端(React 應用程序)會在運行時打印變量 connectedusers當前值(假設我在應用程序的其他地方對其進行了更新)。

但是事實上,該變量的值在我定義事件的時刻就“凍結”了。

為了解決這個問題,我需要將該變量的值添加到 useEffect 的依賴列表中:

useEffect(() => {
  //...
}, [socket, connectedusers]);