【问题标题】:React - Redux, Why affecting all state array elements after add new items into a state arrayReact - Redux,为什么在将新项目添加到状态数组后影响所有状态数组元素
【发布时间】:2019-08-30 14:35:39
【问题描述】:

我有一个包含一些个人信息的 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 NUMBERS 会随着 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] })

}

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

【问题讨论】:

  • 你能显示代码调用操作ADDNEWDATA 和newdata 的值吗?

标签: arrays reactjs redux state


【解决方案1】:

我想帮忙,但我无法从上面理解您在做什么。所以你在第一次点击后声明是 {mydata:[{},{}, {}]} ?您的有效负载将是一个新数组 [{}, {}, {}],所以如果您只返回 [].concat(state.mydata, payload) ?

【讨论】:

    猜你喜欢
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 2018-06-01
    • 2021-03-15
    • 2018-05-03
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多