src/App.js
import React from 'react';
function Food(props) { // --- (2)
return <h1>I like {props.favorite}</h1> // --- (3)
}
/*
function Food({favorite}) {
return <h1>I like {favorite}</h1>
} --- (4)
*/
function App() {
return (
<div>
<h1>Hello</h1>
<Food favorite="Pasta" /> // --- (1)
<Food favorite="Potato" />
<Food favorite="Soju" />
<Food favorite="떡볶이" />
</div>
)
}
export default App;
component
는 재사용이 가능하다. props
를 사용하여 하나의 component
로 여러 결과물을 만들 수 있다.Food component
에 favorite
이라는 props
를 넘겨주었다. favorite
은 "Pasta"
라는 String
데이터를 갖고 있는 변수이다.component
의 첫 번째 argument
는 props
정보이다.props
에 담겨있는 favorite
정보를 출력한다.src/App.js
import React from 'react';
function Food({ favorite }) {
return <h1>I like {favorite}</h1>
}
const foodILike = [
"Pasta",
"Potato",
"Soju",
"떡볶이"
] // --- (1)
function App() {
return (
<div>
<h1>Hello</h1>
{foodILike.map(food => <Food favorite={food}></Food>)} // --- (2)
</div>
)
}
export default App;
props
에 동적 데이터를 넘겨줄 수 있다.HTML element
사이의 { }
표시는 javascript코드 라는 것을 의미한다. 이를 JSX라고 한다.foodILike
는 Food component
에 props
에 넘겨줄 데이터를 갖고 있는 배열이다.map
을 사용하여 foodILike
각각의 data에 접근하여 Food component
에 favorite prop
로 넘겨준다. 추가 수정한 src/App.js
import React from 'react';
function Food({ favorite }) {
return <h1>I like {favorite}</h1>
}
function renderFood(food) {
return <Food key={food} favorite={food}></Food> // --- (1)
}
const foodILike = [
"Pasta",
"Potato",
"Soju",
"떡볶이"
]
function App() {
return (
<div>
<h1>Hello</h1>
{foodILike.map(renderFood)}
</div>
)
}
export default App;
component(element)
가 반복문을 통해 생성될 경우 각각의 component
들은 서로 다른 key
값을 가져야한다.component
에서 어떤 prop들을 원하는지 알기 어려워진다.PropTypes
를 사용하여 각 component
의 명세서를 작성하는 것이다.$ yarn add prop-types
src/App.js
import React from 'react';
import PropTypes from 'prop-types';
function Food({name, rating}) {
return (
<div>
<h2>I like {name}</h2>
<h4>{rating}/5.0</h4>
</div>
)
}
Food.propTypes = {
name: PropTypes.string.isRequired,
rating: PropTypes.number.isRequired,
} // --- (1)
const foodILike = [{
id: 1,
name: "Pasta",
rating: 5,
}, {
id: 2,
name: "Potato",
rating: 4,
}, {
id: 3,
name: "Soju",
rating: 4,
}, {
id: 4,
name: "떡볶이",
rating: 4,
},
]
function App() {
return (
<div>
<h1>Hello</h1>
{foodILike.map(({id, rating, name}) => <Food key={id} rating={rating} name={name} />)}
</div>
)
}
export default App;
component.PropTypes
의 형태로 component
의 prop type을 설정한다.PropTypes
에 맞지 않는 prop 값이 넘어올 경우, error가 발생한다.