错误:产品的 ID 字符串被保存为数组
2022-03-02
24
我尝试将每个产品的 id 存储在 cartItems 中,但是,ID 被保存为一个数组,如下图所示。而不是像这样保存
id: "aRLMZkiSU7T0lcsPCSsV"
如何解决这个问题?
代码沙盒: https://codesandbox.io/s/add-to-cart-jsd9fd?file=/src/App.js:0-2587
以下是代码:
export default function App() {
const [cartItems, setCartItems] = useState([]);
const handleAdd = (id, name, size, cat, color) => {
console.log("add", id, name, size, cat, color);
const productExist = cartItems.find((item) => item.id === id);
if (productExist) {
setCartItems(
cartItems.map((item) =>
item.id === id
? { ...productExist, quantity: productExist.quantity + 1 }
: item
)
);
} else {
setCartItems([
...cartItems,
{ ...id, name, size, cat, color, quantity: 1 }
]);
}
};
// const handleAdd = (item) => {
// console.log("add", item);
// };
console.log(cartItems);
return (
<div className="App">
{products.map((index) => (
<ul key={index.id}>
<li>
<b>{index.prodName}</b>
</li>
<li>Category: {index.cat}</li>
<li>Size: {index.size}</li>
{Object.entries(index.colorMap).map((color) => (
<>
{color[1] !== 0 ? (
<>
{color[0]}
<button
onClick={(e) =>
handleAdd(
index.id,
index.prodName,
index.size,
index.cat,
color[0]
)
}
>
Add to Cart
</button>
{/* <button onClick={(e) => handleAdd(index)}>Add to Cart</button> */}
</>
) : (
<>2</>
)}
<br />
</>
))}
Php {index.price}.00
</ul>
))}
{/* <Cart cartItems={cartItems} /> */}
</div>
);
}
1个回答
从 Id 中删除扩展运算符。
else {
setCartItems([
...cartItems,
{ id, name, size, cat, color, quantity: 1 }
]);
}
Ömer Doğan
2022-03-02