【发布时间】:2021-05-29 15:35:36
【问题描述】:
const initReactiveProperties = (user: any) => {
//TODO: change 'any' to customized interface
user.connected = true;
user.messages = [];
user.hasNewMessages = false;
setConnectedUsersList((prevUsers: any) => [...prevUsers, user]); //setting the connected users in state
};
// storing connected users
const setConnectedUsers = () => {
socket.on("users", (users) => {
users.forEach((user: any) => {
user.self = user.userID === socket.id; // if the user is the authenticated user
initReactiveProperties(user);
});
users = users.sort((a: any, b: any) => {
if (a.self) return -1;
if (b.self) return 1;
if (a.username < b.username) return -1;
return a.username > b.username ? 1 : 0;
});
});
};
// after new user connects, store it in an array
const storeNewUser = () => {
socket.on("user connected", (user) => {
initReactiveProperties(user);
// dispatch({ type: CONNECTED_USERS, payload: connectedUsersList });
});
};
useEffect(() => {
setConnectedUsers();
storeNewUser();
dispatch({ type: CONNECTED_USERS, payload: connectedUsersList });
}, []);
connectedUsersList 获取所有当前连接的用户,我想更新我的 redux 全局存储中的 usersList,但它不会立即作为 connectedUsersList 以 redux 状态存储。但事实并非如此。
【问题讨论】:
-
能否详细说明您的要求,为什么要立即更新?
-
我想将本地状态下的 connectedUsersList 存储到全局商店 redux 中的 usersList 中
标签: reactjs redux react-redux socket.io