728x90
๋ฐ์ํ
๐ก ์ค์ต ํฌ์ธํธ!
๐ ์ํ๋ชฉ๋ก Component ๋ก ๋ง๋ค์ด ๋ฐ์ดํฐ๋ฐ์ธ๋ฉํ๊ธฐ
// data.js ํ์ผ์ ์ํ ๋ฐ์ดํฐ
export default [
{
id : 0,
title : "White and Black",
content : "Born in France",
price : 120000
},
{
id : 1,
title : "Red Knit",
content : "Born in Seoul",
price : 110000
},
{
id : 2,
title : "Grey Yordan",
content : "Born in the States",
price : 130000
}
];
import Data from './data.js';
function App() {
let [shoes, setShoes] = useState(Data);
return (
<div className="App">
<div className="container">
<div className="row">
<Grid shoes={shoes[0]} />
<Grid shoes={shoes[1]} />
<Grid shoes={shoes[2]} />
</div>
</div>
</div>
);
}
function Grid(props) {
return (
<div className="col-md-4 grid">
<img src={`https://codingapple1.github.io/shop/shoes${props.shoes.id + 1}.jpg`} />
<h5>{props.shoes.title}</h5>
<p>{props.shoes.content} & {props.shoes.price}</p>
</div>
)
}
- data.js ํ์ผ์์ Data ๋ผ๋ ๋ณ์๋ก ๋ฐ์์จ ์ํ ๋ฐ์ดํฐ๋ shoes ๋ผ๋ state ์ ์ ์ฅํด์ฃผ์๋ค.
- ์ํ๋ชฉ๋ก ํ ๊ฐ๋ฅผ Grid ๋ผ๋ Component ๋ก ๋ง๋ค์ด์ ๊ธฐ์กด์ ์ํ๋ชฉ๋ก ํ๊ทธ๋ค์ด ์๋ ์์น์ ๊ฐ๊ฐ ๋ฃ์ด ์ด 3๊ฐ์ Component ๋ฅผ ๋ฃ์ด์ฃผ์๋ค.
- Grid Component ๋ ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ค.
- ๊ฐ Grid Component ๋ ๋ค๋ฅธ ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ผ ํ๋ฏ๋ก App Component ์ ์ฒซ๋ฒ์งธ Grid ๋ shoes[0] ๋ฐ์ดํฐ๋ฅผ shoes ๋ผ๋ ๋ณ์๋ช ์ผ๋ก, ๋๋ฒ์งธ Grid ๋ shoes[1] ๋ฐ์ดํฐ๋ฅผ shoes ๋ผ๋ ๋ณ์๋ช ์ผ๋ก.. ์ด๋ฐ ์์ผ๋ก Grid Component ๋ก ์ ์กํด์ฃผ์๋ค.
- ๊ทธ๋ฌ๋ฉด Grid Component ์์๋ props ๋ก object ํํ์ธ shoes ๋ณ์๋ฅผ ๋ฐ์์ ํ์ํ ์์น์ title, content, price ๋ฐ์ดํฐ๊ฐ ๋ฐ์ธ๋ฉ๋๋๋ก ํด์ฃผ์๋ค.
- ์ด๋ฏธ์ง๋ฅผ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉํ๋ ๊ฒ ์กฐ๊ธ ์ด๋ ค์ ๋๋ฐ, ์ด๋ฏธ์ง ํ์ผ ์ด๋ฆ์ด shoes1.jpg, shoes2.jpg ์ด๋ฐ์์ผ๋ก ๊ฐ ์ธ๋ฑ์ค์ 1์ ๋ํ ์ซ์๊ฐ ๋ถ์ด์์๋ค. ๋ฐ๋ผ์ ์ซ์๋ง ์์ ํด์ฃผ๋ฉด ๋๋ฏ๋ก ๋ฐฑํฑ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ props.shoes.id +1 ์ ์์ฑํ์ฌ ํด๋น ์ธ๋ฑ์ค + 1 ํ ์ซ์๊ฐ shoes ๊ธ์ ๋ค์ ๋ถ๋๋ก ํด์ฃผ์๋ค.
๐ Component ๋ฐ๋ณต๋ฌธ ๋๋ฆฌ๊ธฐ
import Data from './data.js';
function App() {
let [shoes, setShoes] = useState(Data);
return (
<div className="App">
<div className="container">
<div className="row">
{
shoes.map((item, idx)=>{
return (
<Grid shoes={shoes[idx]} key={idx}/>
)
})
}
</div>
</div>
</div>
);
}
function Grid(props) {
return (
<div className="col-md-4 grid">
<img src={`https://codingapple1.github.io/shop/shoes${props.shoes.id + 1}.jpg`} />
<h5>{props.shoes.title}</h5>
<p>{props.shoes.content} & {props.shoes.price}</p>
</div>
)
}
- shoes ๋ผ๋ state ์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์์ ๊ฐ์๋งํผ ๋ฐ๋ณต๋ฌธ์ ๋๋ ค์ผ ํ๋ฏ๋ก shoes ์ map() ํจ์๋ฅผ ๋ถ์ฌ์ฃผ์๋ค.
- map() ํจ์ ์์๋ shoes ์ ์ ์ฅ๋ ๋ฐ์ดํฐ ํ๋ํ๋๋ฅผ ์๋ฏธํ๋ item ์ด๋ผ๋ ํ๋ผ๋ฏธํฐ์ ๋ฐ๋ณต๋ฌธ์ ๋ ๋๋ง๋ค ์ฆ๊ฐํ๋ ์ ์๋ฅผ ์๋ฏธํ๋ idx ๋ผ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ด์ฃผ์๋ค.
- ๊ทธ๋ฆฌ๊ณ Grid Component ์์ shoes ๋ณ์๋ค์ shoes[0], shoes[1], ์ด๋ฐ ์์ผ๋ก ์ธ๋ฑ์ค๊ฐ ํ์ํ๋ฏ๋ก ์ซ์ ๋์ idx ํ๋ผ๋ฏธํฐ ๊ฐ์ด ๋ค์ด๊ฐ ์ ์๋๋ก ์์ ํด์ฃผ์๋ค.
- ์ฌ๊ธฐ๊น์ง๋ง ์งํํ๋ฉด React ํ๋ก์ ํธ๋ฅผ ์คํํ์ ๋ ๊ฐ๋ฐ์๋๊ตฌ์์ key ๊ฐ์ ์ ๋ ฅํ์ง ์์๋ค๊ณ warning ์ด ๋จ๋๋ฐ, key ๊ฐ์ ๊ณ ์ ํ ๊ฐ์ด ํ์ํ๊ณ idx ๊ฐ ์ถฉ๋ถํ ๊ทธ ์ญํ ์ ํด์ฃผ๋ฏ๋ก key={idx} ๋ก ์์ฑํด์ฃผ์๋ค.
728x90
๋ฐ์ํ
'[๊ฐ๋ฐ] Practice > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] React Router 2 : Link, Switch, history ๊ธฐ๋ฅ ์์๋ณด๊ธฐ (0) | 2022.03.24 |
---|---|
[React] React Router : ์ ํ ํ ๊ธฐ๋ณธ ๋ผ์ฐํ ํด๋ณด๊ธฐ (0) | 2022.03.24 |
[React] import/export ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2022.03.23 |
[React] ์ผํ๋ชฐ ๋ ์ด์์ ๋์์ธํ๊ธฐ (1) | 2022.03.23 |
[React] yarn ๊ณผ React Bootstrap ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์นํ๊ธฐ (0) | 2022.03.22 |