【发布时间】:2021-09-25 10:18:48
【问题描述】:
我正在尝试添加功能,当我选择一种颜色时,它只显示该颜色的尺寸,然后当我选择尺寸时,它只显示该尺寸的可用库存
我创建了一个状态来存储所选颜色的值,但我不知道如何将它与该颜色的大小绑定,然后将大小与库存绑定!
// products.js
const products = [
{
_id: '1',
name: 'Men solid drop shoulder neck regular fit pullover t-shirts',
category: 'Man',
subcat: 'Tshirt',
type: 'Shoulder',
fabric: '100% Cotton',
price: 89.99,
variants: [
{
color:'black',
sizes:[
{
size:'S',
stock:3
},
{
size:'L',
stock:12,
}
]
},
{
color:'white',
sizes:[
{
size:'M',
stock:8
},
{
size:'L',
stock:2
},
{
size:'XL',
stock:10
}
]
}
],
// Product.js
import { useState } from 'react';
import { ListGroup, Row, Col, Card,Form, Button } from 'react-bootstrap'
const Product = ({product}) => {
const [colorState, setColorState] = useState('');
return (
<Card className="my-3 p-3 rounded">
<Card.Text as='div'>
<ListGroup.Item >
<Row>
<Col>
<Form.Control as="select" onChange={(e)=> {
const selectedColor = e.target.value;
setColorState(selectedColor);
}} >
<option value="" disabled selected hidden>Color</option>
{product.variants.map(variant => <option value={variant.color}>{variant.color}</option>)}
</Form.Control>
{colorState}
</Col>
<Col>
<Form.Control as="select"
>
<option value="" disabled selected hidden>Size</option>
{product.variants[0].sizes.map(sizes => <option value={sizes.size}>{sizes.size}</option>)}
</Form.Control>
Quantity: <input type="number" name="points" min='1' max={product.variants[0].sizes[0].stock}/>
</Col>
</Row>
</ListGroup.Item>
</div>
</Card.Text>
<Button variant="primary">Purchase</Button>{' '}
</Card>
)
}
export default Product
【问题讨论】:
标签: javascript reactjs ecmascript-6