Reactjs 如何使用对象排列正确更新react redux状态?
我在localStorage中保存了一个用户状态,该状态在身份验证后如下所示: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就会触发
"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吗?