[TIL/React] 2023/08/18
CardComponent ๐ src/components/common/ProductCard.jssrc/data/ProductList.jssrc/pages/Home.jsproduct list์ ๋ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ก๊ณ , ์นด๋ ์ปดํฌ๋ํธ์ map์ ํตํด ์ ์ฉํ ๋ค, home
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;
2. 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",
},
];
3. 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์์ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋ ๊ตฌ์กฐ์ด๋ค.
4. ํ์ฌ

์ฝ๋๋ ์กฐ์กํ๋ ๋์์ธ์ ๋ง์์ ๋ ๋ค.
More to read
AI&ML ๊ธฐ์ด
Reference: https://bettermesol.github.io/ml/2019/09/16/ai-ml-dl/AI: ๊ธฐ๊ณ๊ฐ ์ฌ๋์ฒ๋ผ ์๊ฐํ๊ณ ํ๋จํ๊ฒ ๋ง๋๋ ๊ฐ์ฅ ๋์ ๋ฒ์ฃผ์ ๊ธฐ์ ์ ๋๋ค.ML: ๋ฐ์ดํฐ๋ฅผ ํ์ตํ์ฌ ์ค์ค๋ก ๊ท์น์ ์ฐพ์๋ด๋ AI์ ํ ๋ถ์ผ๋ก,
'AI Agent Economy'Novitas : AI Agent๊ฐ ์ง๊ฐ์ ๊ฐ์ง๋ ์ธ์
์ผ๋ง ์ , ๋ฏธ๋์์ ์ฆ๊ถ ๋ฆฌ์์น ๋ฆฌํฌํธ(์ฌํด๋ ์ด๋๋ฆฌ์์ด๋ค: ์์ด์ ํธ ์๋์ Near Automata)๋ฅผ ์ ํ๊ฒ ๋์์ต๋๋ค. AI Agent๋ฅผ ์ธ๊ฐ๊ณผ ํจ๊ปํ ๊ฒฝ์ ์ฃผ์ฒด๋ก ๋ฐ๋ผ๋ณด๋ ์๊ฐ์ ์ ์์ด ์ถฉ๊ฒฉ์ ๋ฐ์๋๋ฌ์ฃ .ํ ๊ฐ์ง ์ง๊ณ ๋์ด๊ฐ ๋ถ๋ถ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ํํ 'AI'
'ERC-8004'Novitas: AI ์์ด์ ํธ ๊ฒฝ์ ์ฃผ์ฒด
Web 4.0์ ํ ๋ฌธ์ฅ์ผ๋ก ์ ์ํ๋ฉด Sovereign Transact์ ๋๋ค.AI๊ฐ ์ธ๊ฐ์ ํ๋ฝ ์์ด ์ง๊ฐ์ ์์ ํ๊ณ , ๊ฒฐ์ ๋ฅผ ์ํํ๋ฉฐ, ์ธํ๋ผ๋ฅผ ํต์ ํ๋ ์ฃผ๊ถ์ ๊ฒฝ์ ์ฃผ์ฒด๊ฐ ๋๋ ์ธ๊ณ์ ๋๋ค. Web 3.0์ด ๋ธ๋ก์ฒด์ธ ๊ธฐ๋ฐ์ ํ์ค์ํ๋ฅผ ์คํํ๋ค๋ฉด, Web 4.0์ ๊ทธ