
react ์คํฐ๋์์ ๋ฆฌ์กํธ๋ฅผ ๋ค๋ฃจ๋ ๊ธฐ์ ์ด๋ผ๋ ์ฑ ์ ์ ์ ํ๊ณ ์ด ์ฑ ์ ์ฝ๊ณ ๋ฐฐ์ด ๊ฒ์ ๋ฐํ์ผ๋ก ์์ฑ๋์๋ค.
properties์ ์ค์๋ง
props ๊ฐ์ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์ค์ ํ ์ ์๋ค.props ๊ฐ์ ์ปดํฌ๋ํธ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์์ ์ฌ์ฉํ ์ ์๋ค.props๋ฅผ JSX ๋ด๋ถ์์ ๋ ๋๋งํ ๋ {} ๊ธฐํธ๋ก ๊ฐ์ธ ์ฃผ๋ฉด ๋๋ค.const MyComponent = (props) => {
return <div>์๋
ํ์ธ์. ์ ์ด๋ฆ์ {props.name}์
๋๋ค.</div>;
}
export default MyComponent;
import MyComponent from "./MyComponent";
// MyComponent์ ๋ถ๋ชจ ์์์์ props ๊ฐ ์ค์
const App = () => {
return <MyComponent name="React"/>;
}
export default App;
props์ ๊ธฐ๋ณธ๊ฐ ์ค์ ํ ๋ ์ฌ์ฉconst MyComponent = (props) => {
return <div>์๋
ํ์ธ์. ์ ์ด๋ฆ์ {props.name}์
๋๋ค.</div>;
}
MyComponent.defaultProps = {
name: "๊ธฐ๋ณธ ์ด๋ฆ"
};
export default MyComponent;
const MyComponent = (props) => {
return (
<div>
<p>์๋
ํ์ธ์. ์ ์ด๋ฆ์ {props.name}์
๋๋ค.</p>
<p>children ๊ฐ์ {props.children>์
๋๋ค.</p>
</div>;
}
MyComponent.defaultProps = {
name: "๊ธฐ๋ณธ ์ด๋ฆ"
};
export default MyComponent;
import MyComponent from "./MyComponent";
// MyComponent์ ๋ถ๋ชจ ์์์์ props ๊ฐ ์ค์
const App = () => {
return <MyComponent>๋ฆฌ์กํธ</MyComponent>;
}
export default App;
destructuring assignment
const MyComponent = (props) => {
// ๋น๊ตฌ์กฐํ ํ ๋น ๋ฌธ๋ฒ์ ์ด์ฉํ์ฌ props ๋ด๋ถ ๊ฐ ์ถ์ถ
const {name, children} = props;
return (
<div>
<p>์๋
ํ์ธ์. ์ ์ด๋ฆ์ {name}์
๋๋ค.</p>
<p>children ๊ฐ์ {children>์
๋๋ค.</p>
</div>;
}
MyComponent.defaultProps = {
name: "๊ธฐ๋ณธ ์ด๋ฆ"
};
export default MyComponent;
// ํจ์ ํ๋ผ๋ฏธํฐ๊ฐ ๊ฐ์ฒด์ผ ๋ ๋น๊ตฌ์กฐํ ํ ๋น ๋ฌธ๋ฒ ์ ์ฉ ๊ฐ๋ฅ
const MyComponent = ({name, children}) => {
return (
<div>
<p>์๋
ํ์ธ์. ์ ์ด๋ฆ์ {name}์
๋๋ค.</p>
<p>children ๊ฐ์ {children>์
๋๋ค.</p>
</div>;
}
MyComponent.defaultProps = {
name: "๊ธฐ๋ณธ ์ด๋ฆ"
};
export default MyComponent;
props๋ฅผ ์ง์ ํ๊ฑฐ๋ props์ ํ์
์ ์ง์ ํ ๋ ์ฌ์ฉimport PropTypes form "prop-types";
...
Food.propTypes = {
name: PropTypes.string.isRequired,
picture: PropTypes.string.isRequired,
rating: PropTypes.number.isRequired,
};
array: ๋ฐฐ์ดarrayOf(๋ค๋ฅธ PropType): ํน์ PropType์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ดarrayOf(PropType.number): ์ซ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ดbool: true ํน์ falsefunc: ํจ์number: ์ซ์object: ๊ฐ์ฒดstring: ๋ฌธ์์ดsymbol: ES6 Symbolnode: ๋ ๋๋งํ ์ ์๋ ๋ชจ๋ ๊ฒ (์ซ์, ๋ฌธ์์ด, ํน์ JSX ์ฝ๋, children๋ node Prototype์ด๋ค.)instanceOf(class): ํน์ ํด๋์ค์ ์ธ์คํด์คoneOf([]): ์ฃผ์ด์ง ๋ฐฐ์ด ์์ ๊ฐ ์ค ํ๋oneOfType([]): ์ฃผ์ด์ง ๋ฐฐ์ด ์์ ์ข
๋ฅ ์ค ํ๋objectOf();: ๊ฐ์ฒด์ ๋ชจ๋ ํค ๊ฐ์ด ์ธ์๋ก ์ฃผ์ด์ง PropType์ธ ๊ฐ์ฒดshape({ name: PropTypes.string, num: PropTypes.number }): ์ฃผ์ด์ง ์คํค๋ง๋ฅผ ๊ฐ์ง ๊ฐ์ฒดany: ์๋ฌด ์ข
๋ฅrender ๋ฉ์๋์์ this.props๋ฅผ ์กฐํํ๋ฉด ๋๋ค.defaultProps์ propTypes๋ฅผ ์ค์ ํ ์ ์๋ค. (ํด๋์ค ๋ด๋ถ์์๋ ์ค์ ๊ฐ๋ฅ)static defalutProps = {
name: "๊ธฐ๋ณธ ์ด๋ฆ"
};
static propTypes = {
name: PropTypes.string,
favoriteNumber: PropTypes.number.isRequired
};