在redux reducer状态下,我想更新对象的对象内的属性。
{
users:{
'1':{id:'1', name:'', items:[], ....}
'2':{id:'1', name:'', items:[], ....}
...
}
}
我只想更新对象items
中的对象,其中键1 or 2
或其他任何键,其余状态保持不变。操作包含键号action.id
,而action.payload
包含字符串。
我很困惑spread
和update
的工作方式,以及如何保持其余users
个对象不变。
当然我的代码是错误的:)但我尝试过
case types.UPDATE_ITEMS: {
return update(...state, {
[action.id]: { items: { $set: action.payload } }
});
}
答案 0 :(得分:0)
这正是update
的用法,它将保持其余状态不变。因此无需传播
case types.UPDATE_ITEMS:
return update(state, {
[action.id]: {
items: { $set: action.payload }
}
});
答案 1 :(得分:-1)
您可以使用其余的价差运算符仅更新users
部分:
case types.UPDATE_ITEMS:
return {
...state, // That will keep any other keys in the object besides 'users'
users: {
...state.users, // keep the part you want to keep from 'users',
[action.id]: {
...state.users[action.id], // keep the part you want from this user
items: [action.payload] // update the part you want
}
}
};