[TIL/React] 2023/08/18

์›๋ฏผ๊ด€ยท2023๋…„ 8์›” 18์ผ
0

[TIL]

๋ชฉ๋ก ๋ณด๊ธฐ
100/159
post-thumbnail

CardComponent ๐ŸŸ 

  1. src/components/common/ProductCard.js
import React from "react";
import { styled } from "styled-components";
import ComponentWrapper from "./ComponentWrapper";
import { products } from "../../data/ProductList";

const ProductWrapper = styled.div`
  width: calc(33.3% - 40px);
  margin: 10px;
`;

const ProductImgWrapper = styled.div`
  background-color: rgb(249, 247, 248);
  width: 100%;
  height: 400px;
  border: none;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 16px;
  box-shadow: 0px 10px 8px #999;
`;

const ProductImage = styled.img`
  width: 100%;
  height: auto;
`;

const ProductInfoTitle = styled.p`
  font-weight: bolder;
  font-size: 25px;
`;

const ProductInfoEtc = styled.p`
  color: #9b9b9b;
  font-weight: bolder;
`;

const ProductCard = () => {
  return (
    <ComponentWrapper style={{ display: "flex", flexWrap: "wrap" }}>
      {products?.map((product) => (
        <ProductWrapper key={product?.id}>
          <ProductImgWrapper>
            <ProductImage src={product?.image} />
          </ProductImgWrapper>
          <div>
            <ProductInfoTitle>{product?.title}</ProductInfoTitle>
            <ProductInfoEtc>
              {product?.price} / {product?.weight}
            </ProductInfoEtc>
          </div>
        </ProductWrapper>
      ))}
    </ComponentWrapper>
  );
};

export default ProductCard;
  1. src/data/ProductList.js
import {
  porkImg,
  chickenImg,
  porkcutletImg,
  eggImg,
  milkImg,
  hanuroundImg,
  carthegardenImg,
} from "../images";

export const products = [
  {
    id: "1",
    image: porkImg,
    title: "์ดˆ์‹ ์„  ๋ผ์ง€ ์‚ผ๊ฒน์‚ด ๊ตฌ์ด์šฉ",
    price: "๊ธฐ์ค€๊ฐ€ 19,800์›",
    weight: "600g",
  },
  {
    id: "2",
    image: chickenImg,
    title: "์ดˆ์‹ ์„  ๋‹ญ๋ณถ์Œํƒ•",
    price: "๊ธฐ์ค€๊ฐ€ 7,800์›",
    weight: "950g",
  },
  {
    id: "3",
    image: porkcutletImg,
    title: "์ดˆ์‹ ์„  ๋“ฑ์‹ฌ ๋ˆ๊นŒ์Šค",
    price: "๊ธฐ์ค€๊ฐ€ 12,500์›",
    weight: "770g",
  },
  {
    id: "4",
    image: eggImg,
    title: "์ดˆ์‹ ์„  ๋™๋ฌผ๋ณต์ง€ ๋ฌดํ•ญ์ƒ์ œ ์œ ์ •๋ž€",
    price: "๊ธฐ์ค€๊ฐ€ 6,900์›",
    weight: "12๊ตฌ",
  },
  {
    id: "5",
    image: milkImg,
    title: "์ดˆ์‹ ์„  ๋ฌดํ•ญ์ƒ์ œ ์šฐ์œ ",
    price: "๊ธฐ์ค€๊ฐ€ 3,600์›",
    weight: "900ml",
  },
  {
    id: "6",
    image: hanuroundImg,
    title: "์ดˆ์‹ ์„  ์ด์œ ์‹์šฉ ํ•œ์šฐ ์šฐ๋‘” ๋‹ค์ง์œก",
    price: "๊ธฐ์ค€๊ฐ€ 17,100์›",
    weight: "180g",
  },
  {
    id: "7",
    image: carthegardenImg,
    title: "๋‚˜๊ฐ€๊ฑฐ๋“  ๋‹˜",
    price: "๊ธฐ์ค€๊ฐ€ 39,800์›",
    weight: "980g",
  },
];
  1. src/pages/Home.js
import React from "react";
import { backgroundImg } from "../images";
import ComponentWrapper from "../components/common/ComponentWrapper";
import TestComponent from "../components/common/TestComponent";
import ProductCard from "../components/common/ProductCard";
const Home = () => {
  return (
    <>
      <div style={{ backgroundColor: "white", height: "1000px" }}>
        <img src={backgroundImg} style={{ width: "100%", height: "100%" }} />
      </div>
      <div
        style={{
          backgroundColor: "white",
          height: "1000px",
          overflowX: "auto",
        }}
      >
        <ProductCard />
      </div>

      <div style={{ backgroundColor: "gray", height: "1000px" }}></div>
      <div style={{ backgroundColor: "white", height: "1000px" }}></div>
    </>
  );
};

export default Home;

product list์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์žก๊ณ , ์นด๋“œ ์ปดํฌ๋„ŒํŠธ์— map์„ ํ†ตํ•ด ์ ์šฉํ•œ ๋’ค, home page์—์„œ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

  1. ํ˜„์žฌ

์ฝ”๋“œ๋Š” ์กฐ์žกํ•˜๋‚˜ ๋””์ž์ธ์€ ๋งˆ์Œ์— ๋“ ๋‹ค.

profile
Write a little every day, without hope, without despair โœ๏ธ

0๊ฐœ์˜ ๋Œ“๊ธ€