ProductsList.jsx๋ฅผ
{/* products๊ฐ ์์ ๊ฒฝ์ฐ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ถ๋ ฅ */}
{data.products &&
data.products.map((product) => (
<ProductCard
key={product._id}
id={product._id}
title={product.title}
image={product.images[0]}
price={product.price}
rating={product.reviews.rate}
ratingCounts={product.reviews.counts}
stock={product.stock}
/>
))}
์๋์ ๊ฐ์ด ์์ ํ๋ค.
{/* products๊ฐ ์์ ๊ฒฝ์ฐ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ถ๋ ฅ */}
{data.products &&
data.products.map((product) => (
<ProductCard key={product._id} product={product} />
))}
ProductCard.jsx์์๋
const ProductCard = ({ product }) => {
๋ก ์์ ํ๊ณ
์๋์ ์ถ๋ ฅํ ๋ฐ์ดํฐ๋ค์ ์์ . product?.๋ฅผ ๋ถ์ฌ์ ์์ ํ๋ค.
import "./ProductCard.css";
import star from "../../assets/white-star.png";
import basket from "../../assets/basket.png";
import { Link } from "react-router-dom";
import CartContext from "../../contexts/CartContext";
import { useContext } from "react";
const ProductCard = ({ product }) => {
const { addToCart } = useContext(CartContext);
return (
<article className="product_card">
<div className="product_image">
<Link to={`/product/${product?.id}`}>
<img
src={`http://localhost:5000/products/${product?.images[0]}`}
// {image}๋ง ๋ฃ์ผ๋ฉด ์ ๋๋ก ๋ถ๋ฌ์ค์ง ๋ชปํจ
// ๋ฐฑ์๋ ์๋ฒ ์ฃผ์๋ก ์์ฒญํ๋ฉด ๋จ
alt="product image"
/>
</Link>
</div>
<div className="product_details">
<h3 className="product_price">
{product?.price?.toLocaleString("ko-KR")} ์
</h3>
{/* ?๋ฅผ ๋ฃ์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ์๋๋ผ๋ ์๋ฌ๊ฐ ๋์ง์์ */}
<p className="product_title">{product?.title}</p>
<footer className="align_center product_info_footer">
<div className="align_center">
<p className="align_center product_rating">
<img src={star} alt="star" /> {product?.reviews.rate}
</p>
<p className="product_review_count">{product?.reviews.counts}</p>
</div>
{/* ์ฌ๊ณ ๊ฐ ์์ ๊ฒฝ์ฐ์๋ง ์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ ํ์ */}
{product?.stock > 0 && (
<button
className="add_to_cart"
onClick={() => addToCart(product, 1)}
>
<img src={basket} alt="basket button" />
</button>
)}
</footer>
</div>
</article>
);
};
export default ProductCard;

useContext๋ก addToCartํจ์๋ฅผ ๊ฐ์ ธ์จ๋ค.

ํด๋ฆญํ ๊ฒฝ์ฐ์ addToCart ์คํํ๋ค. ์๋์ 1๊ฐ๋ก
์ ์ ์ถ๋ ฅ๋๋์ง ํ์ธํ๋ค.



๋ฐฑ์๋์์๋ ์ถ๊ฐ๋๊ฒ์ ํ์ธํ๋ค.
