Reactjs 如何使用对象排列正确更新react redux状态?

Reactjs 如何使用对象排列正确更新react redux状态?,reactjs,redux,state,ecmascript-next,Reactjs,Redux,State,Ecmascript Next,我在localStorage中保存了一个用户状态,该状态在身份验证后如下所示: "user" : { "first_name":"test19", "last_name":"test19", "email":"test19@testmail.com", "token" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjcyMCwia" ... 现在,我还有一个表单,一旦服务器返回更新的信息,我的reducer就会触发

我在localStorage中保存了一个用户状态,该状态在身份验证后如下所示:

  "user" : {
  "first_name":"test19", 
  "last_name":"test19",
  "email":"test19@testmail.com",
  "token" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjcyMCwia"
   ...
现在,我还有一个表单,一旦服务器返回更新的信息,我的reducer就会触发一个更新用户状态的操作,如下所示:

case userConstants.UPDATE_USER:
      return {
        loggedIn: true,
        ...state,
        user: action.user
      };
到目前为止还不错,只是服务器返回的对象不包含令牌,并且上面的reducer的结果是一个没有我需要的令牌的新状态


知道我做错了什么吗?谢谢!:)

如果我正确理解您的问题,您希望避免在更新后丢失令牌。像这样更新你的减速器

case userConstants.UPDATE_USER:
    return {
        loggedIn: true,
        ...state,
        user: {
            ...action.user,
            token: state.user.token
        }
    };

这里的想法是,在返回新状态之前,您将使用状态中的标记属性覆盖action.user的标记属性(不发生变化)

首先添加状态,它将包含用户的旧版本,在销毁主状态后覆盖用户:

case userConstants.UPDATE_USER:
      return {
        loggedIn: true,
        ...state,
        user:{
           ...action.user,
           ...state.user,
        },
      };

抱歉,伙计,您的解决方案根本没有更新状态,是因为…state.user覆盖了…action.user吗?