【发布时间】:2019-01-05 06:30:22
【问题描述】:
我是 React 的初学者。面对一个问题不知道为什么。 让一组产品进入反应状态。
当用户单击按钮(通过子组件)时,我正在从状态中克隆当前产品数组,然后对其进行修改,但状态正在更新而不调用 setState。 帮助真的很感激。我想知道它为什么会这样。
这里是 App 组件文件:
class App extends Component {
constructor(props) {
super(props);
this.state = {
products: [
{
id: 1,
img: 'http://placehold.it/460x250/e67e22/ffffff&text=HTML5',
title: 'Laptop',
quantity: 1,
price: 250,
},
],
cart_products: [],
total_price: 0,
total_product: 0,
};
}
addProductToCart = (id) => {
let cartProducts = [];
// Trying to clone first
let productCopy = [...this.state.products];
// Find specific product
let newProduct = productCopy.find((item) => {
return item.id === id;
});
// Now into new product I want to add some extra property
newProduct['originalPrice'] = newProduct.price;
// Here I want some other code.
cartProducts.push(newProduct);
this.setState({
cart_products: cartProducts
});
}
render() {
return (
<div className="container-fluid">
<div className="container">
<h1 className="text-center">React.js Example </h1>
</div>
<div>
<div className="col-sm-6">
<Cart products={this.state.cart_products} totalPrice={this.state.total_price} totalProduct={this.state.total_product} />
</div>
<div className="col-sm-6">
<Products products={this.state.products} onClicked={this.addProductToCart} />
</div>
</div>
</div>
);
}
}
问题是“产品”数组进入状态自动更新。这是 React Chrome 扩展的图片
应用程序的想法只是简单的购物车系统。当用户单击添加产品按钮时,我想将特定产品添加到购物车中。但我不知道如何解决这个问题。
【问题讨论】:
-
在你使用
onClick事件的地方发布你的渲染代码 -
我编辑了添加渲染方法的问题。希望能帮到你
标签: javascript reactjs ecmascript-6