arrays - 当状态是对象数组时如何更新特定值 - React

标签 arrays reactjs

我是 ReactJs 的新手,我正在尝试为 ipotetic 电子商务做一个简单的摘要篮:当您添加产品时,您需要知道它是否已经存在,在这种情况下仅增加商品编号。

正如你所看到的,如果该行不存在,我会执行一个连接(行它是一个对象

{ 
  id: singleProd.id, 
  name: singleProd.name, 
  price: singleProd.price,              
  value: 1 
}

),但如果存在,我只需要增加 value 属性

state = {
    counters: []
  };

  addCounter = row => {
    let countersRows = this.state.counters;
    let existRow = countersRows.filter(c => c.id === row.id);

    if (existRow.length !== 0) {
      let index = countersRows.findIndex(x => x.id === existRow[0].id);
      console.log("Update here... like this.state.counters[index].value + 1?");
    } else {
      this.setState({ counters: countersRows.concat(row) });
    }
  };

  deleteRow = counterId => {
    const counters = this.state.counters.filter(c => c.id !== counterId);
    this.setState({ counters });
  };

我听说过对象分配,但我不知道该怎么做。 非常感谢。

enter image description here

最佳答案

看起来您只是尝试增加具有匹配 ID 的第一个项目的 value 属性。如果是这样,这是您想要的吗?

addCounter = row => {
  const { counters } = this.state;
  const existingRow = counters.filter(c => c.id === row.id)[0];

  if (existingRow.length !== 0) {
    this.setState(
      Object.assign(existingRow, { value: existingRow.value + 1 })
    );
  } else {
    this.setState({ counters: counters.concat(row) });
  }
};

关于arrays - 当状态是对象数组时如何更新特定值 - React,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55348793/

相关文章:

ios - swift 3 : Using Two Arrays to populate grouped Table

node.js - 使用 Azure AD、ReactJS 和 NodeJS 对用户进行身份验证并使用 Graph API

javascript - 如何创建一个元素并使用其引用在 react 中附加子元素?

javascript - 计算给定货币数组的变化

arrays - 当所有跳跃的长度相同并且某些位置无法降落时,我可以通过一个范围移动的最小跳跃是多少?

arrays - 根据另一个 numpy 的 bin 对一个 numpy 数组求和

javascript - 向 React 组件动态添加任意类型的子组件

javascript - 使_children在数据树中不可选择-Tabulator React

javascript - --React 在被新内容填充时会更新包含的 div 的大小

c++ - cpp中如何判断json是object还是array,如果object转成array?