如何在事件回调中使用useEffect回调

170 阅读1分钟

我正在运行这样的一些代码。

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

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

来初始化一个事件的回调newuserconnected 在一个socket.io连接上。

我以为这样做后,任何时候我在服务器上调用该事件,客户端(React应用程序)将在运行时打印变量connectedusers当前值(想象我在应用程序的其他地方更新它)。

但是,在我定义该事件的时候,该变量的值被 "卡在了时间里"。

为了解决这个问题,我必须做的是将该变量的值添加到useEffect 调用所依赖的变量列表中。

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