直接解决问题。 每次我与新用户创建一个新房间时,该应用程序都可以正常运行。但是,一旦我尝试将一个新用户添加到现有会议室中,我就会失去该会议室中的所有先前用户。
该代码位于-https://codesandbox.io/embed/xenodochial-tree-w75r8
假设我要将两个用户(max和payne)添加到一个名为cool的全新房间中,我希望输出如图所示。
从房间:
chatData:
cool:
message: {}
users: Array(2)
0: "max"
1: "payne"
length: 2
proto: Array(0)
proto: Object
cricket: {users: Array(3), messages: Array(2)}
答案 0 :(得分:0)
我认为您需要在附加新值之前复制用户数组内的先前状态。这就是为什么您失去所有以前的用户的原因。
case "EXISTING_ROOM_NEW_USER":
return {
...initState,
[action.payload.roomname]: {
users: [...initState[action.payload.roomname].users, action.payload.username],
message: {}
}
};