Javascript React.js数组中对象的setState属性
现在我需要增加/减少状态对象数组的属性值。我试着把我想到的一切都抛到一边。有时它没有抛出任何错误,但现在也没有更新值。我收到错误消息: 此.state.products[key]未定义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.
克隆状态对象后,可以直接对其进行修改并后退到状态
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
})
]
})
}