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
ํน์ false
func
: ํจ์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
};