React-Redux,为什么在将新项添加到状态数组后影响所有状态数组元素

时间:2019-04-09 10:18:04

标签: arrays reactjs redux state

我有一个redux状态数组,其中包含一些个人信息。当我单击一个按钮时,此数组将由新项目填充。示例数组在下面

第一次点击

单击否-名称-年龄

  1     - DAVID - 48
  1     - JOSH  - 21
  1     - MARIA - 55

第二次点击后,我想查看我的数组,例如

  1     - DAVID - 48
  1     - JOSH  - 21
  1     - MARIA - 55
  2     - JOHN - 70
  2     - MICHAEL - 18
  2     - SYLVESTER - 33

第三个,第四个...等等。因此,第一列是按钮的点击编号。

但是问题在于,所有旧数据的点击次数都会随着新数字的变化而变化,例如(第二次点击后)

  2     - DAVID - 48
  2     - JOSH  - 21
  2     - MARIA - 55
  2     - JOHN - 70
  2     - MICHAEL - 18
  2     - SYLVESTER - 33

我从不将旧数据更改为数组,我只是放置新数据,我无法理解为什么旧的CLICIK NUMBER随着NEW CLICK NUMBER发生变化

我尝试过的Redux代码

case "ADDNEWDATA": {
     let arr = [...state.mydata];
     arr = [...arr, action.payload.newdata]
     return Object.assign({}, state, { mydata: arr })

}

 case "ADDNEWDATA": {
     let arr = [...state.mydata];
     action.payload.newdata.map((item) => {
            arr = arr.push(item)
     })
     return Object.assign({}, state, { mydata: arr })

}

 case "ADDNEWDATA": {
     return Object.assign({}, state, { mydata: [...state.mydata, action.payload.newdata] })

}

我认为我没有代码问题,但数组似乎不是这样的((

1 个答案:

答案 0 :(得分:0)

我想提供帮助,但是根据以上内容,我无法理解您在做什么。因此,您要在第一次点击后声明{mydata:[{},{},{}]}?而且您的有效负载将是[[},{},{}]的新数组,因此,如果您只返回[] .concat(state.mydata,payload)?