javascript - 如何在反应js中更新多个状态
问题描述
我不确定问题的标题是否正确。我遇到了一些问题,我不知道如何解决它们。
在我的应用程序中,有购物车页面,有商品列表。每个项目都有一个字段数量。可以更新。我的问题是当我启动 i 状态数量并从中创建两个函数来增加和减少数量时。但问题是当我单击 addQuantity 时,它会同时更新所有产品数量。我真的不知道要解决这个问题,我从过去几天一直试图弄清楚。这是两个项目。
这些是我的代码
类 CartContainer 扩展 React.Component { state = { quantity: 1, };
componentDidMount() { this.props.getItemsAddedToCart(); }
使成为() {
const addItem = () => {
this.setState({
quantity: this.state.quantity + 1,
});
};
const removeItem = () => {
this.setState({
quantity: this.state.quantity - 1,
});
};
购物车.js
return cartData.map((item, index) => { return (
<Grid item xs={4} container justify="space-around">
<CartItemDetails
quantity={quantity}
addItem={addItem}
removeItem={removeItem}
addQty={addQuantity}
subQty={subtractQuantity}
cart={item}
/>
</Grid>
</Grid>
</Grid>
);
CartItemDetail.js
return (
<Grid container className="cart-item-details">
<Grid xs={12} md={4}>
{!this.props.team ? (
<Grid className="counter" xs={12} container>
<Grid container justify="center" alignItems="center" xs={4}>
<button
onClick={this.props.removeItem}
className="decrement"
></button>
</Grid>
<Grid container justify="center" alignItems="center" xs={4}>
<span>{this.props.quantity}</span>
</Grid>
<Grid container justify="center" alignItems="center" xs={4}>
<button
onClick={this.props.addItem}
className="increment"
></button>
</Grid>
</Grid>
) : (
""
)}
任何帮助都会很棒,我真的很想弄清楚这一点。
解决方案
像下面这样声明你的状态
state={
quantity:{}
}
使用产品ID或独特的东西来制作数量的关键
const addItem = (id) => {
this.setState({
quantity: {
...this.state.quantity,
[id]:this.state.quantity[id]+1
}
});
};
const removeItem = (id) => {
this.setState({
quantity: {
...this.state.quantity,
[id]:this.state.quantity[id]-1
}
});
};
<Grid item xs={4} container justify="space-around">
<CartItemDetails
quantity={this.state.quantity[id]||0}
addItem={addItem}
removeItem={removeItem}
addQty={addQuantity}
subQty={subtractQuantity}
cart={item}
/>
</Grid>
</Grid>
</Grid>
);
推荐阅读
- c++ - 编译中的示例 C++ 项目警告
- sql - 如何执行仅获取唯一列的 SELECT COUNT 语句?
- r - e1071 包中 predict.naiveBayes 方法源代码中函数的未知用法
- sql - 根据前一行值更新 Closing_Balance
- excel - VBA选择非相邻动态列的范围
- node.js - 具有不同调用者的 bash 别名
- python-imaging-library - 使用 python 在动画 gif 中放置自定义调色板和自定义帧速率
- c++ - 如何在 QT 中的自定义视频小部件 t 上绘制矩形?
- excel - VBA 将数据从一张表传输到另一张表
- sql - 解析 SQL Server 表中的 XML