【问题标题】:React/Redux - Set new state a state which is an arrayReact/Redux - 将新状态设置为数组状态
【发布时间】:2017-08-17 12:26:02
【问题描述】:

我只是在学习 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 和 name,它显然也不起作用。

我之前的一个想法是这样的:

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

但这也行不通。有什么建议吗?

【问题讨论】:

    标签: javascript arrays reactjs state react-redux


    【解决方案1】:

    你只需要克隆数组,然后克隆你要修改的项目

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

    【讨论】:

    • 我收到语法错误。另外,您确定可以创建const 然后覆盖它吗?我将其更改为let,但仍然出现语法错误:Unexpected token (56:22) while parsing file:
    • 这取决于你在 Babel 中启用了什么阶段。如果启用 stage-2,则语法有效。而且我没有覆盖 const 变量。我正在改变它所指的对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 2019-09-12
    相关资源
    最近更新 更多