Javascript React.js数组中对象的setState属性

Javascript React.js数组中对象的setState属性,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,现在我需要增加/减少状态对象数组的属性值。我试着把我想到的一切都抛到一边。有时它没有抛出任何错误,但现在也没有更新值。我收到错误消息: 此.state.products[key]未定义 克隆状态对象后,可以直接对其进行修改并后退到状态 handleMinus(key) { var stateCopy = [...this.state.products]; /Create a copy of products array using spread operator syntax.

现在我需要增加/减少状态对象数组的属性值。我试着把我想到的一切都抛到一边。有时它没有抛出任何错误,但现在也没有更新值。我收到错误消息:

此.state.products[key]未定义


克隆状态对象后,可以直接对其进行修改并后退到状态

handleMinus(key) {
    var stateCopy = [...this.state.products];   /Create a copy of products array using spread operator syntax.
    stateCopy[key].amount += 1;
    this.setState({products : stateCopy });

}
如果您想知道
[…this.state.products]
的意思,请检查此答案:

使用此选项(检查注释):

您的代码也将使用一个小的更改,更改您使用
setState
的方式要更新
state
值,请使用以下方法:

handleMinus(key) {
    var stateCopy = Object.assign({}, this.state);
    stateCopy.products = stateCopy.products.slice();
    stateCopy.products[key] = Object.assign({}, stateCopy.products[key]);
    stateCopy.products[key].amount += 1;
    this.setState(stateCopy);   //use this
}

你在不必要地复制你的州

handleMinus(key) {
  const product = this.state.products[key];

  this.setState({
    products: [
      ...this.state.products,

      [key]: Object.assign({}, product, {
        amount: product.amount + 1
      })
    ]
  })
}

您如何在代码中实现
handleMinus
?您还需要提供该代码。因此,在本例中,您的键是0或1,对吗?@RuhulAmin它已实现,但我不会粘贴整个标记。它可以在点击时工作,我有固定的上下文和console.log,可以工作fine@LeeHanKyeol很可能,但它可能不在我的实际代码中
handleMinus(key) {
    var stateCopy = Object.assign({}, this.state);
    stateCopy.products = stateCopy.products.slice();
    stateCopy.products[key] = Object.assign({}, stateCopy.products[key]);
    stateCopy.products[key].amount += 1;
    this.setState(stateCopy);   //use this
}
handleMinus(key) {
  const product = this.state.products[key];

  this.setState({
    products: [
      ...this.state.products,

      [key]: Object.assign({}, product, {
        amount: product.amount + 1
      })
    ]
  })
}