无法使用带有 redux-toolkit 的 socketIO 获取对象内函数的值

Posted

技术标签:

【中文标题】无法使用带有 redux-toolkit 的 socketIO 获取对象内函数的值【英文标题】:Can't get the value of a function inside an object using socketIO with redux-toolkit 【发布时间】:2022-01-16 05:13:04 【问题描述】:

我正在使用带有套接字 io 的 redux 工具包,但无法从服务器获取值返回。我尝试将值分配给 res 数组,但数组长度仍为 0

    let res = []
    socket.emit("users")
    socket.on("users", (users) => 
    
        res.concat(users)
        users.forEach(user => 
            const  username, userID = user
            res.push( username: username, userID: userID )
        )
    )
    return res;
)
The array length is equal 0 but it's look like this 
[enter image description here][1]


  [1]: https://i.stack.imgur.com/f0KdF.png

【问题讨论】:

【参考方案1】:

这个发射函数socket.emit("users"),没有为socket.on("users", (users) => //some code )传递任何用户数据。

在执行socket.emit("user") 时,您必须将数据传递给函数,以便在事件回调中将其作为函数的第一个参数。所以 emite 函数会是这样的 socket.emit("users", userData) 这里 userData 是包含用户数组的变量

【讨论】:

实际上在服务器端我已经发送了值。如果您在我的问题上看到带有链接的图像,则 res 数组被分配了一些奇怪的值,但不在数组内 socket.io/get-started/private-messaging-part-1 我正在这样做,但是在 Vue 中使用 react 而不是 Vue,他们使用 initReactiveProperties(user) socket.on("users", (users) => users.forEach((user) => user.self = user.userID === socket.id; initReactiveProperties(user); ); // put the current user first, and then sort by username this.users = users.sort((a, b) => if (a.self) return -1; if (b.self) return 1; if (a.username < b.username) return -1; return a.username > b.username ? 1 : 0; ); ); 分配变量

以上是关于无法使用带有 redux-toolkit 的 socketIO 获取对象内函数的值的主要内容,如果未能解决你的问题,请参考以下文章

Redux-Toolkit = 无法使用 useSelector 显示 API 响应数据

WebStorm 中的 Redux-toolkit 操作参数

“AsyncThunkAction”Redux-toolkit 类型上不存在属性“then”

带有tensorflow gpu的docker - ImportError:libcublas.so.9.0:无法打开共享对象文件:没有这样的文件或目录

在 Redux-Toolkit 中使用 for 循环的问题

如何在 Storybook 中使用 redux-toolkit?