У меня есть раскрывающееся меню выбора, как показано на изображении ниже, и когда я выбираю первую категорию Eco-YogaMats
, он извлекает данные с помощью API и отображает на экране и add
, subtract
и initialquantitiy=0
отображается правильно (и может изменить количество), но когда в следующий раз я выбираю любую другую категорию (Travel-YogaMats)
, отображается add
, subtract
, но поле количества отображается как белый квадрат (если я добавляю / вычитаю, он переходит к NaN
) не знаю, почему это происходит, это происходит только тогда, когда я переключаюсь в категорию, и этого не происходит, когда я впервые выбираю категорию. Не могу понять причину этого, я попытался немного подправить, но мне тоже не помогло, любые предложения, пожалуйста.
//addBasketitems are array of objects of selected Category
function Home({ props, addBasketitems }) {
let initialQuantities = props.reduce((quantities, product) => ({ ...quantities, [product.product_name]: 0 }), {});
// increase items
const increase = (productName) => {
setQuantites({ ...quantities, [productName]: quantities[productName] + 1 });
}
// decrease items
const decrease = (productName) => {
setQuantites({ ...quantities, [productName]: Math.max(0, quantities[productName] - 1) });
};
- и теперь оператор return, который отображается на экране
return (
<div className="products">
{props.map((eachproduct) => {
let productName = eachproduct.product_name;
let producNumber = eachproduct.producNumber;
let price = eachproduct.price;
let desc = eachproduct.productDescription;
let photo = eachproduct.image_URL;
let stockQuantity = eachproduct.stockQuantity;
return (
<div className="products" key={producNumber}>
<ul>
<li>
<img className="products-image" src={photo} />
</li>
<li>{productName} </li>
<li>
Item No:{producNumber}(InStock:{stockQuantity})
</li>
<li>price:{price}£ </li>
<li>{desc}</li>
<li>
<ButtonGroup aria-label="quantityofproduct" key={productName}>
<Button variant="secondary" name="subtract" value="subtract" onClick={() => decrease(productName)}>
-
</Button>
<Button name={productName} variant="secondary">
{quantities[productName]} // here its showing NaN
</Button>
<Button variant="secondary" name="add" value="add" onClick={() => increase(productName)}>
+
</Button>
</ButtonGroup>
<Button
name={producNumber}
value={quantities[productName]}
variant="primary"
onClick={() => {
addBasketitems(eachproduct, quantities[productName]);
clearselection(productName);
alert(`${productName}, with quantitiy${quantities[productName]} is added to the basket`);
}}
>
Add to Basket
</Button>
</li>
</ul>
</div>
);
})}
</div>
);
}
[] [Видеоклип]