장바구니 기능을 구현 하는데 있어서 상품 개별 삭제는 반드시 필요한 기능이었다.
우선 개별 삭제 기능 코드는 아래와 같다.
{product.map((product, idx) => (
<CartProduct
key={product.product_id}
product={product}
setProduct={setProduct}
setCheckedArr={setCheckedArr}
removeProduct={removeProduct}
/>
))}
const removeProduct = id => {
setProduct(
product.filter(product => {
return product.id !== id;
})
);
setCheckedArr(
checkedArr.filter(checked => {
return checked.id !== id;
})
);
};
<button
className="cancelBtn"
onClick={() => {
removeProduct(product.id);
}}
>
✕
</button>
그런데 setProduct 밑에 setCheckedArr가 있다.
해당 장바구니 기능중 하나는 선택된 상품만 최종가격에 반영이 된다였다.
그래서 체크가 된 상품만을 담는 배열인 checkedArr가 있다.
처음엔 product 배열만 삭제를 하였으나 상품을 삭제 했음에도 최종가격은 변함이 없었다는 것이였다.
그래서 상품을 삭제할 때 checkedArr의 상품도 같이 삭제를 해서 최종가격에도 영향을 주게 구현하였다.
상품 개별삭제라는 기능을 구현하기 전에는 많이 복잡할거라는 생각을 했었다.
하지만 막상 구현을 해보니 id와 filter만 잘 이용한다면 아주 간단한 기능이였다.
그래서 비슷한 개념인 기능이 있다면 얼마든지 활용할 수 있을거 같다.