2 回答
TA贡献1828条经验 获得超6个赞
您需要将当前项目的索引发送给removeProduct函数,以便它知道要删除哪个项目。
<Container>
<div>
{
cart.map((item, index) => ({
<p>item.productName</p>
<p>item.price</p>
<i class="fas fa-trash-alt mr-1" style={{ color: '#ff6b6b' }} onClick={() => this.removeProduct(index)}></i>
))
}
</div>
</Container>
而在removeProduct功能上,你必须删除该index位置的项目。
const removeProduct = (indexToRemove) => {
const cart = JSON.parse(localStorage.getItem("cartProduct"));
cart.splice(indexToRemove, 1)
localStorage.setItem("cartProduct", JSON.stringify(cart));
window.location.reload();
};
TA贡献1804条经验 获得超2个赞
更改 removeproduct 代码如下。并将 product-id 作为参数传递给函数。
const removeProduct = (productId) => {
let cart = JSON.parse(localStorage.getItem("cartProduct"));
cart = cart.filter(productData => productData._id !== productId)
localStorage.setItem("cartProduct", JSON.stringify(cart));
window.location.reload();
};
有关filter方法的更多详细信息,请参阅 MDN 文档。
如下更改您的组件以将 id 参数传递给函数。
<Container>
<div>
{
cart.map(item => (
<p>item.productName</p>
<p>item.price</p>
<i
class="fas fa-trash-alt mr-1"
style={{ color: '#ff6b6b' }}
onClick={() => removeProduct(item._id)}
></i>
))
}
</div>
</Container>
添加回答
举报