Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Javascript React/Redux-将新状态设置为数组状态_Javascript_Arrays_Reactjs_State_React Redux - Fatal编程技术网

Javascript React/Redux-将新状态设置为数组状态

Javascript React/Redux-将新状态设置为数组状态,javascript,arrays,reactjs,state,react-redux,Javascript,Arrays,Reactjs,State,React Redux,我正在学习React/Redux,正在处理以下状态。该对象是一个数组,其中包含javascript对象: default_state = [ { id: 1, name: "Smith" }, { id: 2, name: "Matt" }, { id: 3, name: "Tom" } ]; 现在,在我的reducer中,我想覆盖数组中第二个对象的名称。我该怎么做?我想出了这样的办法,但似乎不对: case "SAVE

我正在学习React/Redux,正在处理以下状态。该对象是一个数组,其中包含javascript对象:

default_state = [
  {
    id: 1,
    name: "Smith"
  },
  {
    id: 2,
    name: "Matt"
  },
  {
    id: 3,
    name: "Tom"

  }
];
现在,在我的reducer中,我想覆盖数组中第二个对象的名称。我该怎么做?我想出了这样的办法,但似乎不对:

case "SAVE_CHANGES":
        state = {...state, { id: 3, name: "Peter"};
因此,我想首先找到具有正确id的对象,然后覆盖此对象名称。现在我只是覆盖id和名称,显然也不起作用

我以前的想法是:

state = {...state, state[2].name="Peter"};

但这也不起作用。有什么建议吗?

您只需克隆阵列,然后克隆要修改的项

// clone the array
const newState = [...state];
// clone the item
newState[2] = {...newState[2], name: "Peter" };

您只需克隆阵列,然后克隆要修改的项

// clone the array
const newState = [...state];
// clone the item
newState[2] = {...newState[2], name: "Peter" };

我得到一个语法错误。另外,您确定可以创建一个
常量
,然后覆盖它吗?我将其更改为一个
let
,但仍然出现语法错误:
解析文件时出现意外标记(56:22):
这取决于您在Babel中启用的阶段。如果启用阶段2,则语法有效。我没有覆盖常量变量。我正在修改它引用的对象。我得到一个语法错误。另外,您确定可以创建一个
常量
,然后覆盖它吗?我将其更改为一个
let
,但仍然出现语法错误:
解析文件时出现意外标记(56:22):
这取决于您在Babel中启用的阶段。如果启用阶段2,则语法有效。我没有覆盖常量变量。我正在改变它所指的对象。