React native 在React Native中调用Object.assign时,Redux存储状态未更新

React native 在React Native中调用Object.assign时,Redux存储状态未更新,react-native,redux,websocket,React Native,Redux,Websocket,我正在React Native上开发一个应用程序 这是我的代码,UPDATE\u我的连接\u ID按预期工作,并在发送时更新状态更新房间但是,根本不更新状态。它可以到达console.log(tmp)行 const initialState = { playerOne: "", playerTwo: "", connectionIdArr: [], myConnectionId: "", }; const reducer = (state = initialState, act

我正在React Native上开发一个应用程序

这是我的代码,
UPDATE\u我的连接\u ID
按预期工作,并在发送时更新状态<代码>更新房间但是,根本不更新状态。它可以到达
console.log(tmp)

const initialState = {
  playerOne: "",
  playerTwo: "",
  connectionIdArr: [],
  myConnectionId: "",
};

const reducer = (state = initialState, action) => {
 switch (action.type) {
    case "UPDATE_MY_CONNECTION_ID":
      return Object.assign({}, state, {
        myConnectionId: action.payload.myConnectionId,
      });
    case "UPDATE_ROOM":
      console.log(
        "updating room after receiving broadcast from room player",
        action.payload
      );
      Axios.get(
        `${process.env.API_ENDPOINT}/get_room/${action.payload.match_id}`
      )
        .then((res) => {
          const tmp = {};
          if (res.data.players[0] && res.data.players[0].length > 0)
            tmp.playerOne = res.data.players[0];
          if (res.data.players[1] && res.data.players[1].length > 0)
            tmp.playerTwo = res.data.players[1];
          tmp.connectionIdArr = [...res.data.connections];
          console.log(tmp);
          return Object.assign({}, state, tmp);
        })
        .catch((err) => console.log("error UPDATE_ROOM: ", err));
    default:
       etc etc etc...

您永远不应该在reducer中使用异步请求,如果您真的想执行异步请求,redux thunk或redux saga是一个不错的选择。我建议你们两个都看一看,选择一个适合你们需要的


您不应该在reducer中使用异步请求,如果您真的想执行异步请求,redux thunk是一个不错的选择,或者redux传奇。我建议你们两个都看一看,选择一个适合你们需要的