.png)
- map, mockup data๋ฅผ ํ์ฉํ์ฌ ์ปดํฌ๋ํธ์ ๐props์ ์ ๋ฌํ๋ ๋ฒ์ ๋ํด์!
map๋ฉ์๋๋ ๋ฐฐ์ด ๊ฐ์ฒด์ ๋ฉ์๋๋ก ์๋ก ๋งคํ๋ ์๋ก์ด ๊ฐ์ ๋ฐํํ๋ค๋ ๊ฒ์ด ํน์ง์ด๋ค.

ํ๋์ ๊ฐ์ ํ์์ ๊ฐ์ง ์ปดํฌ๋ํธ๊ฐ ๋ฐ๋ณต๋ ํํ๋ก์ ์๋์ mock data๋ก ๋ถํฐ ์ป์ ์ฃผ์ ๊ฐ, ์ํ๋ช
, ๊ฐ๊ฒฉ์ ๋ฐ์ดํฐ๋ก ๋ฐ์ map ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์๋ก์ด ์ปดํฌ๋ํธ ํํ 3๊ฐ๋ก ๋ฆฌํดํ ๊ฒฐ๊ณผ์ด๋ค.
mockup data๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ api ๊ตฌ์ถ ์ ์์ ๋ฐฉํธ์ผ๋ก ํ ์คํธ๋ฅผ ํ๊ธฐ ์ํ ๋ฐ์ดํฐ๋ก ํ๋ฉด์ ๊ทธ๋ ค๋ณด๊ธฐ ์ํด์ ์ฌ์ฉ๋๊ณค ํ๋ค.<script> const DATA = [ { id: 1, img: "https://s3.ap-northeast-2.amazonaws.com/cdn.wecode.co.kr/social/mushroom.jpg", name: "๋งํ๋ฆฌ ๋ฒ์ฏ 200g", price: "1,000์" }, { id: 2, img: "https://s3.ap-northeast-2.amazonaws.com/cdn.wecode.co.kr/social/octo.jpg", name: "[์ํ์์ฐ] ๋ชจ๋ฆฌํ๋์ฐ ์์๋ฌธ์ด ํ๋ง๋ฆฌ(๋๋)", price: "27,000์" }, { id: 3, img: "https://s3.ap-northeast-2.amazonaws.com/cdn.wecode.co.kr/social/pota.jpg", name: "[KF365] ๋ฐค๊ณ ๊ตฌ๋ง 800g/๋ด", price: "4,590์" }, { id: 4, img: "https://s3.ap-northeast-2.amazonaws.com/cdn.wecode.co.kr/social/vegi.jpg", name: "๊ฒฝ๊ธฐ ์๊ธ์น 250g/๋จ", price: "2,450์" } ] export default DATA; </script>

-์ ์ด๋ฏธ์ง์์๋ LoginPage ์ปดํฌ๋ํธ์์ Button ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค.
LoginPage๊ฐ ๋ถ๋ชจ ์ปดํฌ๋ํธButton์ด ์์ ์ปดํฌ๋ํธ
Props๋ฅผ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ์๊ฒ ๋๊ธธ ์ ์์ผ๋ฉฐ, ์ด๋ ๊ฒ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ง๋ ๊ฐ์ฒด๋ฅผProps๋ผํ๋ค.- ๋ฐ๋ผ์
props๋ฅผ ํตํด ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ์์ ์ปดํฌ๋ํธ๋ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ๋ฐ์ ์ฌ์ฉํ ์ ์๋ค.
- EX>๋์ผํ ์ปดํฌ๋ํธ์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ ํ ์ ์๋ค
-๋ฆฌ์กํธ๋ฅผ JSX ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ค๋ ์ฌ์ค์ ๋ํด์ ๋ช ์ฌํ์!
JSX๋ HTML ์์์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ฐ๋ ๋ฌธ๋ฒ์ธ๋ฐ ์์ ์ปดํฌ๋ํธ์Props์ ๋ฌ์ {}๋ก ํญ์ ๋ฌถ์ด์ค๋ค
- EX>
<LoginButton abc={{abc:1}}/>- jsx ๋ฌธ๋ฒ์ ์จ์ ๊ฐ์ฒด๋ฅผ ๋ด์ ํํ
- EX2>
<LoginButtont text={'ํ์ธ'}/>- ๋ก๊ทธ์ธ ๋ฒํผ ์ปดํฌ๋ํธ์ Props๋ก 'text' ํค์ 'ํ์ธ' ํค์ ๊ฐ์ด ๋์ด๊ฐ ํํ๋ก ๊ฐ์ฒด์ ํํ๋ก ๊ฐ์ ๋๊ฒจ๋ฐ์๋ค.
props๋ฅผ ๋ฃ์ด์ค๋ค.
- ๋ ๋ํจ์๊ฐ ํญ์ ์คํ์ด๋๋ฉด์ ๊ทธ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ํ๋ฉด์ ๋ํ๋์ง๊ธฐ ๋๋ฌธ์ ๋ ๋ ํจ์์ ๋ฆฌํด ์ฌ์ด์์ ๊ตฌํํ๊ณ ์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํด์ผํ๋ค.
- ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์์ปดํฌ๋ํธ์ ์ ๋ฌํ
Props์ ์ ๊ทผํ๊ธฐ ์ํด์๋ this.props๋ก ์ ๊ทผํ๋ค.- ์ปดํฌ๋ํธ๋ ๋ ๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ์ฌ์ฉํ๋
Props์ ๋ฐ๋ผ ๊ฐ์ ์ปดํฌ๋ํธ๋ผ๋ ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง ์ ์๋ค.<script> import React, { Component } from 'react'; class ProductCard extends Component { render() { console.log(this.props) return ( <div className="card"> <img className="productImg" src={this.props.img}/> <div className="productInfoWrapper"> <p className="productName">{this.props.name}</p> <p className="productPrice">{this.props.price}</p> </div> </div> ) } } export default ProductCard; </script>
- map ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์์ ์ปดํฌ๋ํธ์ธ ProductCard๋ฅผ mock-data์ ๊ธธ์ด๋งํผ ๋ง๋ค๊ณ props๋ฅผ ์ ๋ฌํ์ฌ ๋ฐ์ดํฐ๊ฐ ์ ๋ฌ๋ ํํ์ ์ปดํฌ๋ํธ๋ค์ ๋ฐํํ์ฌ ํ๋ฉด์ ๋ ๋ํด์ค๋ค..!
<script> import React, {Component} from 'react'; import ProductCard from './Card' import './App.css' import DATA from './data'; class App extends Component { render() { return ( <div className="contaniner"> <div className="titleWrapper"> <p className="title">๊ธฐ๋ถ์ข์ JAMIE MARKET</p> <p className="subTitle">์ดํน๊ธ ๋ฐฐ์ก JAMIE ROCEKT DELIVERY</p> </div> <div className="cardWrapper"> {DATA.map((product,idx) => { return ( <ProductCard key={product.id} img={product.img} name={product.name} price={product.price} /> }) } ) </div> </div> ) } }; export default App; </script>

- props๋ ๊ฐ์ฒด๋ผ๋ ์ฌ์ค์ ์์ง๋ง๊ณ ๋ฆฌ์กํธ์์ props๋ฅผ ์ ํ์ฉํด๋ณด์
- ๋ฐฑ์ ๋ง๊ณ ํ๋ณต์ค์ด์ ๊ดํฌ๋์ ํฌํผ ๊ฐ์ ์ค:)