최대 1 분 소요

enter image description here

📖 Array(),fill(),map() 를 이용하여 배열 생성

먼저 구현해야하는 내용은 Home 컴포넌트에서 자식 컴포넌트인 Product 컴포넌트에 데이터를 전송합니다. 전송해야할 내용은 이베이의 rating 입니다. 즉 별 개수 입니다. Home에서 보낸 rating의 크기 만큼 별로 전환 하여 출력되도록 구현해보겠습니다.

📖 구현

Home 컴포넌트에서 rating = {3} 을 전달하겠습니다. 여기서 “3” 이 아닌 {3}인 이유는 숫자로 전달해야하기 때문입니다. 아래 예제에서 같이 Array(rating)에 3이 전달하고 콘솔해보면 [empty × 3]값이 나옵니다. 여기에서 fill() 메서드를 사용해서 인자를 채워줍니다. 인자가 없으므로 undifine가 할당됩니다. 여기까지 콘솔해보겠습니다. [undefined, undefined, undefined]

그 다음 map() 메서드를 이용해서 각 자리 index에 해당하는 값을 할당해보면 배열에 <p>★</p>이 채워져서 구현됩니다. 즉 화면에는 ★★★ 별이 3개가 출력됩니다.


import React from "react";
import "./Product.css";

function Product({ id, image, title, price, rating }) {
  return (
    <div className="product">
      <div className="product__info">
        <p>{title}</p>
        <p className="product__price">
          <small>가격</small>
          <strong>{price}</strong>
          <small></small>
        </p>

        <div className="product__rating">
          {Array(rating)
            .fill()
            .map(() => (
              <p></p>
            ))}
        </div>
      </div>
      <img src={image} alt="" />
      <button>장바구니에 담기</button>
    </div>
  );
}

export default Product;

댓글남기기