App.jsx ์ ์ฅ๋ฐ๊ตฌ๋์ ์ํ์ ์ญ์ ํ๋ ํจ์๋ฅผ ์ถ๊ฐํ๋ค.
//์ฅ๋ฐ๊ตฌ๋ ์ํ ์ญ์
const removeFromCart = (id) => {
const oldCart = [...cart]; //๊ธฐ์กด์ ์ฅ๋ฐ๊ตฌ๋
const newCart = oldCart.filter((item) => item.product._id !== id);
//๋งค๊ฐ๋ณ์๋ก ๋ฐ์์ค๋ id์ ๊ฐ์ง ์์ ๊ฒ๋ง newCart์ ๋ด๋๋ค
setCart(newCart); //์ฅ๋ฐ๊ตฌ๋์ ์ ์ฅํ๋ค.
};
๊ทธ๋ฆฌ๊ณ Cart ํ๋ก๋ฐ์ด๋์ removeFromCartํจ์๋ฅผ ์ ๋ฌํ๋ค.
<CartContext.Provider value={{ cart, addToCart, removeFromCart }}>
CartPage.jsx์ ๊ฐ์ useContext์ ์์ ํจ์๋ฅผ ์ถ๊ฐํ๊ณ
const { cart, removeFromCart } = useContext(CartContext);
์ญ์ ๋ฒํผ์ onclick ์ด๋ฒคํธ๋ก ํด๋น ํจ์๊ฐ ์คํ๋๊ฒํ๋ฉฐ , ๋งค๊ฐ๋ณ์๋ก ์ํid๋ฅผ ๋ณด๋ด์ค๋ค.
<img
onClick={() => removeFromCart(product._id)}
src={remove}
alt="remove icon"
className="cart_remove_icon"
/>
์ญ์ ํ๊ธฐ


๊ทธ๋ฆฌ๊ณ ์ด ์ํ๋ก๋ ๋ฐฑ์๋์์๋ ์ญ์ ๊ฐ ๋์ง ์์ ์ํ๋ผ
๋ฐฑ์๋์ ์ ๋ฐ์ดํธ๋ฅผ ํด์ค๋ค.

import apiClient from "../utils/api-client";
//์นดํธ์ ์ ํ id์ ์๋์ ์ถ๊ฐํ๋ ์์ฒญ
export function addToCartAPI(id, quantity) {
return apiClient.post(`/cart/${id}`, { quantity });
}
//์นดํธ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
export async function getCartAPI() {
return await apiClient.get("/cart");
}
//์นดํธ ์ํ ์ญ์
export function removeFromCartAPI(id) {
return apiClient.patch(`/cart/remove/${id}`);
}
App.jsx
//์ฅ๋ฐ๊ตฌ๋ ์ํ ์ญ์
const removeFromCart = (id) => {
const oldCart = [...cart]; //๊ธฐ์กด์ ์ฅ๋ฐ๊ตฌ๋
const newCart = oldCart.filter((item) => item.product._id !== id);
//๋งค๊ฐ๋ณ์๋ก ๋ฐ์์ค๋ id์ ๊ฐ์ง ์์ ๊ฒ๋ง newCart์ ๋ด๋๋ค
setCart(newCart); //์ฅ๋ฐ๊ตฌ๋์ ์ ์ฅํ๋ค.
removeFromCartAPI(id).catch((err) => {
toast.error("์ฅ๋ฐ๊ตฌ๋ ์ํ ์ญ์ ์๋ฌ");
});
};
์ญ์ ๋ฅผ ํ๊ณ ํ์ฌ ์ฅ๋ฐ๊ตฌ๋์ ์์ดํ ๊ฐ์์ ํฉ๊ณ ํ์ธํ๊ณ

๋ชฝ๊ณ db์์๋ ์ ์ญ์ ๊ฐ ๋๋์ง ํ์ธํ๋ค.
