减速器表现怪异

时间:2019-06-19 10:41:20

标签: reactjs react-hooks react-context

直接解决问题。 每次我与新用户创建一个新房间时,该应用程序都可以正常运行。但是,一旦我尝试将一个新用户添加到现有会议室中,我就会失去该会议室中的所有先前用户。

该代码位于-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)}

1 个答案:

答案 0 :(得分:0)

我认为您需要在附加新值之前复制用户数组内的先前状态。这就是为什么您失去所有以前的用户的原因。

case "EXISTING_ROOM_NEW_USER":
  return {
    ...initState,
    [action.payload.roomname]: {
      users: [...initState[action.payload.roomname].users, action.payload.username],
      message: {}
    }
  };