Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何将对象添加到现有对象中,类似于在数组中执行push,但在reducer中执行redux_Reactjs_Object_Redux - Fatal编程技术网

Reactjs 如何将对象添加到现有对象中,类似于在数组中执行push,但在reducer中执行redux

Reactjs 如何将对象添加到现有对象中,类似于在数组中执行push,但在reducer中执行redux,reactjs,object,redux,Reactjs,Object,Redux,目标:能够添加、替换或删除对象中的项目 当前对象的外观: {123:{…},1234:[…},12345:{…} 我有一个reducer,我试图在其中添加一个新项或替换现有项到类似数组的对象中 因此,我: 返回{…state,all:state.all[data.id]=data} 但这一切都是为了擦除整个all对象,并将其设置为一个对象。我非常希望有类似镜像.push功能的功能 我还需要对更新的项目执行此操作,以便替换对象列表中的项目 最后,我想我知道如何删除,但只是为了确保这是正确的 del

目标:能够添加、替换或删除对象中的项目

当前对象的外观:

{123:{…},1234:[…},12345:{…}

我有一个reducer,我试图在其中添加一个新项或替换现有项到类似数组的对象中

因此,我:

返回{…state,all:state.all[data.id]=data}

但这一切都是为了擦除整个
all
对象,并将其设置为一个对象。我非常希望有类似镜像
.push
功能的功能

我还需要对更新的项目执行此操作,以便替换对象列表中的项目

最后,我想我知道如何删除,但只是为了确保这是正确的

delete state.all[data.id];
return state

首先,不要突变状态:

const newState = {...state};
然后将新状态中的all值更新为您想要的值

const { all } = newState;
all[data.id] = data;
最后,返回新的更新状态

return {...state, ...{ all }};

首先,不要突变状态:

const newState = {...state};
然后将新状态中的all值更新为您想要的值

const { all } = newState;
all[data.id] = data;
最后,返回新的更新状态

return {...state, ...{ all }};

只是
返回{…state,…all}
@TaylorAustin会传播“all”值的内容,而不是添加all:{}对于对象。好的,对于更新,你会做同样正确的事情吗?因为这会用列表中的键覆盖当前对象吗?我是否以正确的方式进行了删除?事实上,现在我想起来了,我可能需要制作一个副本,这样类似于
delete newState.all[data.id]
之后就是
返回newState
?如果你想删除这个值,那么是的,这是正确的。难道不是
返回{…state,…all}
@TaylorAustin会传播“all”值的内容而不是添加all:{}对于对象。好的,对于更新,你会做同样正确的事情吗?因为这会用列表中的键覆盖当前对象吗?我是否以正确的方式进行了删除?事实上,现在我想起来了,我可能需要制作一个副本,这样类似于
delete newState.all[data.id]
然后返回newState?如果要删除该值,则选择“是”,这是正确的。