【发布时间】:2021-09-25 13:38:33
【问题描述】:
我们需要使用 ReactJS 将对象数组从服务器存储到客户端,但它不起作用。
所有这些都是为了在我的客户端显示用户连接,但我的用户列表状态并没有保存任何内容。
注意事项:
我正在使用这些技术:
- NodeJS(服务器)
- ReactJS(客户端)
- socket.io
客户端代码
const [usersList, setUsersList] = useState([]);
// get user connections data
useEffect(() => {
socket.on(ALL_USERS, ({ users }) => {
console.log(users);
setUsersList(users);
});
}, []);
console.log("LIST: " + usersList);
服务器代码
const users = getUsers(socket.id);
socket.emit(constants.ALL_USERS, {
users: users,
});
【问题讨论】:
-
这是怎么回事?
-
我写console.log(usersList)的时候,不保存任何东西,只出现Object [object]
-
显示的代码中没有任何地方你在这样做。 您向我们展示的代码以什么方式失败了?
-
关于更新...我希望
console.log在useEffect之外执行两次。一次是在组件第一次渲染时,一次是在组件在状态更新后重新渲染时。在这两个渲染之间,值是否发生了变化?此外,不要这样做:console.log("LIST: " + usersList);它几乎没有告诉您有关usersList的任何信息,因为您将其强制为字符串。相反,记录对象本身:console.log("LIST: ", usersList);当你这样做时,在组件的两个渲染中具体记录了什么?
标签: javascript node.js arrays reactjs socket.io