Javascript 使用扩展语法向集合元素添加对象
我正在使用react-redux,希望在reducer上使用扩展语法,以便返回并更新包含集合元素的对象,我希望在其中添加对象 我有以下reducer逻辑,它不起作用,因为集合中填充的是有效负载对象值,而不是对象本身:Javascript 使用扩展语法向集合元素添加对象,javascript,reactjs,redux,reducers,spread,Javascript,Reactjs,Redux,Reducers,Spread,我正在使用react-redux,希望在reducer上使用扩展语法,以便返回并更新包含集合元素的对象,我希望在其中添加对象 我有以下reducer逻辑,它不起作用,因为集合中填充的是有效负载对象值,而不是对象本身: export default function(state = INITIAL_STATE, action){ switch (action.type){ case CREATE: return {...INITIAL_STATE,collection:{.
export default function(state = INITIAL_STATE, action){
switch (action.type){
case CREATE:
return {...INITIAL_STATE,collection:{...state.collection,...action.payload}};
default:
return state;
}
}
有效载荷是一个类似于:
{
'DG67QBXQJW7':{
key:'12345',
price:'15',
name:'test'
}
})
返回的状态,我希望有类似的东西:
{
name:'items',
collection:{
'DG67QBXQJW7':{
key:'12345',
price:'15',
name:'test'
},
'FB843VUV3N9':{
key:'67890',
price:'11',
name:'test2'
}
}
{
name:'items',
key:'12345',
price:'15',
name:'test'
}
但我之前的逻辑是这样的:
{
name:'items',
collection:{
'DG67QBXQJW7':{
key:'12345',
price:'15',
name:'test'
},
'FB843VUV3N9':{
key:'67890',
price:'11',
name:'test2'
}
}
{
name:'items',
key:'12345',
price:'15',
name:'test'
}
如果有人能帮我或者给我看一本高级的、好的、适合这种操作的语法指南,那就太好了
提前感谢。您只需要使用当前状态,而不是初始状态作为对象的基础
return {...state, collection: {...state.collection, ...action.payload}};
测试示例:
const state={name:1,集合:{test3:{a:3},test4:{a:4}};
const payload={test5:{a:5}};
log({…state,collection:{…state.collection,…payload}})代码>你完全正确@Ed Lucas。谢谢你的回答!