【发布时间】:2022-01-05 12:16:19
【问题描述】:
每当有人单击按钮(增量/减量)时,我都会尝试更改产品数量的状态。但不知何故,它并没有增加这里的数量。 当我单击增量按钮时,它会更改第一项的数量。当我单击第二个项目增量按钮时,它会重置第一个项目的数量并更改第二个项目。 [1]:https://i.stack.imgur.com/fifeQ.png
这是我的code
**App.js**
function App() {
let [productList, setProductList] = useState([]);
productList = [
{
id: 0,
prodName: "iPhone X",
type: "Mobile",
price: "80000",
quantity: 0,
},
{
id: 1,
prodName: "iPhone 11",
type: "Mobile",
price: "120000",
quantity: 0,
},
{
id: 2,
prodName: "iPhone 12",
type: "Mobile",
price: "180000",
quantity: 0,
}];
const incrementQuantity = (index) => {
let newProductList = [...productList];
newProductList[index].quantity++;
setProductList(newProductList);
console.log(newProductList);
}
return (
<div className="App">
<Header heading="Simple Cart project" />
<Mediator list={productList} incrementQuantity={incrementQuantity} />
{/* list is the property name which you are passing to different component */}
</div>
);
}
export default App;
**Mediator.js**
function Mediator(props) {
return (
props.list.map((product, index) => {
return <ProductList productList={product} key={index} incrementQuantity = {props.incrementQuantity} index={index}/>
})
);
}
export default Mediator;
**ProductList.js**
function ProductList(props) {
console.log("inside product list")
console.log(props);
return (
<div className="row">
<div className="col-5">
<h2>{props.productList.prodName} </h2> <span className="price-column"><Chip label={props.productList.price} color="success" />₹ <br />
</span> <br />
</div>
<div className="col-3">
<ButtonGroup size="small" color="secondary" aria-label="small button group">
<Button className="btn-decrease">-</Button>
<Box
component="div"
sx={{
display: 'inline',
p: 1,
m: 1,
bgcolor: 'background.paper',
}}
>
{props.productList.quantity}
</Box>
<Button className="btn-increase"
onClick={() => { props.incrementQuantity(props.index) }}
>+</Button>
</ButtonGroup>
</div>
<div className="col-4">
<span><h4>Total Cart Price: </h4>{props.productList.quantity * props.productList.price}</span>
</div>
</div>
);
}
export default ProductList;
【问题讨论】:
标签: javascript reactjs react-hooks use-state