我的react-redux有以下初始状态
const initialState = {
logged: false,
user: null,
company: null,
}第一次登录时,我设置了状态数据
const data = action.payload.data;
const properties = action.payload.properties;
const notifications = action.payload.notifications;
return {
...state,
logged: true,
user: {
id: data.UserID,
firstName: data.UserFName,
lastName: data.UserLName,
email: data.UserEmail,
securityLevel: parseInt(data.SecurityLevelID),
notifications: {
multiProp: notifications.MultiProp && parseInt(notifications.MultiProp) === 1 ? false : true
}
},
company: {
id: data.CompanyID,
name: data.CompanyName,
email: data.ContactEmail,
leadSource: parseInt(data.LeadSourceCompanyID)
}
}然后,在我的项目的某个时刻,我只需要更新user.notifications.multiProp,所以我创建了一个名为UPDMULTIPROP的新类型,我正在执行以下操作:
case Types.UPDMULTIPROP:
const userData = action.payload.data;
return {
...state,
user: {
notifications: {
multiProp: userData.notifications.MultiProp && parseInt(userData.notifications.MultiProp) === 1 ? false : true,
}
}
}但是,它将所有其他用户状态设置为undefined。如何仅更新multiProp
谢谢
发布于 2021-08-16 21:11:25
user也是一个对象,为了保持user状态不变,您还应该扩展user。
case Types.UPDMULTIPROP:
const userData = action.payload.data;
return {
...state,
user: {
...state.user,
notifications: {
multiProp: userData.notifications.MultiProp && parseInt(userData.notifications.MultiProp) === 1 ? false : true,
}
}
}发布于 2021-08-16 21:15:47
要不变地更新嵌套对象,您需要再次扩展它。喜欢
user : { ...state.user, notifications : someValue }
就像这样。
https://stackoverflow.com/questions/68808945
复制相似问题