https://ko.legacy.reactjs.org/docs/components-and-props.html
1. ์ปดํฌ๋ํธ
๐บ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ ๋ํด ์์๋ณด์ :)
๐บ ๋ฆฌ์กํธ์ ์ปดํฌ๋ํธ๋ Tree ๊ตฌ์กฐ๋ก
1. ํจ์ํ
2. ํด๋์คํ
2๊ฐ์ง๋ฅผ ๊ฐ์ง๋ค.
๐ ํจ์ํ
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
๐ ํด๋์คํ
class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
๐ ํจ์ํ ์ปดํฌ๋ํธ ์ฌ์ฉ ๋ฐฉ๋ฒ
๋ชจ๋๋ด๋ณด๋ด๊ธฐ - ์ธ๋ถ์์ ์ฌ์ฉํ ๋ชจ๋ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
๋ชจ๋๋ถ๋ฌ์ค๊ธฐ - ๋ถ๋ชจ์ปดํฌ๋ํธ์์ ์ฌ์ฉ
๐บ ์ปดํฌ๋ํธ ํฉ์ฑ
- ์๋ฅผ ๋ค์ด Welcome์ ์ฌ๋ฌ ๋ฒ ๋ ๋๋งํ๋ App ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
//์์
function App() {
return (
<div>
<Welcome name="Sara" />
<Welcome name="Cahal" />
<Welcome name="Edite" />
</div>
);
}
//ํ์
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
2. props (์ค์)
๐บ props ๊ฐ๋
- ์์ ์ปดํฌ๋ํธ์์ ํ์์ปดํฌ๋ํธ๋ก ์ ๋ฌํ๋ ๋งค๊ฐ๋ณ์ ์ ๋๋ค.
- ํ์ ์ปดํฌ๋ํธ์์๋ ์ฒซ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก props๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค.
- ํ์ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ๋๋ {}๋ฅผ ์ด์ฉํด์ ๊ฐ์ ๋ฐ์ ์ ์์ต๋๋ค.
- ์์ ์ปดํฌ๋ํธ์์๋ ์ปดํฌ๋ํธ์ ์์ฑ๊ฐ์ ๋์ผ์ด๋ฆ์ผ๋ก ์ง์ ํฉ๋๋ค.
//์์
const App = () => {
return (
<Fragment>
<MyComponent name={"ํ๊ธธ๋"} age={2} email={"aa@naver.com"}/>
</Fragment>
)
}
//ํ์
const MyComponent = ( {name, age, addr, email} ) => {
return (
<div>
๋์ ์ฒซ๋ฒ์งธ ์ปดํฌ๋ํธ<br/>
ํ๋กํผํฐ1:{name}<br/>
ํ๋กํผํฐ2:{age}<br/>
๊ธฐ๋ณธ๊ฐ ํ๋กํผํฐ3:{addr}<br/>
</div>
)
๐ props์ ๊ธฐ๋ณธ๊ฐ ์ค์ ํ๊ธฐ (์ฃผ์ - ๋์๋ฌธ์ ์ ํํ๊ฒ ๊ตฌ๋ถํจ )
์ปดํฌ๋ํธ๋ช .defaultProps = {}
//MyComponent.defaultProps = {
// addr: '์์ธ์',
// age: 0
//}
function MyComponent( {name = "์ด๋ฆ์์" , age = 0, addr = "๊ฒฝ๊ธฐ๋" } /* props */ ) { //props๊ฐ์ ๋ฐ์
}
๐ props์ ํ์ ๊ฒ์ฆ (์ฃผ์ - ๋์๋ฌธ์ ์ ํํ๊ฒ ๊ตฌ๋ถํจ )
์ปดํฌ๋ํธ๋ช .propTypes = {}
import PropTypes from 'prop-types'; //ํ๋กญ์ค ํ์
๊ฒ์ฌ
//....
MyComponent.propTypes = {
name: PropTypes.string,
age: PropTypes.number,
email: PropTypes.string.isRequired//ํ์๊ฐ(์์์ปดํฌ๋ํธ์์ ๋ฐ๋์ ์ ๋ฌ)
}
[ App02.js ]
//์์ app
import MyComponent from "./component/Mycomponent";
function App(){
return(
<div>
<MyComponent name={"ํ๊ธธ๋"} age={20} addr={"์์ธ์"}/>
<MyComponent/>
</div>
)
}
export default App;
- Props : ์์ ์ปดํฌ๋ํธ์์ ํ์์ปดํฌ๋ํธ๋ก ์ ๋ฌํ๋ ๋งค๊ฐ๋ณ์
[ MyComponent.js ]
import Proptypes from 'prop-types';
function MyComponent( {name, age, addr} /* props */ ){
/* function MyComponent( {name="์ด๋ฆ์์", age = 0, addr = "๊ฒฝ๊ธฐ๋"} */
//console.log(props);
/* name = "์ด์์ "; ์ณ์ง ์์ ๋ฐฉ๋ฒ */
return (
<div>
3 : {name} {/* props.name */}
1 : {age}
2 : {addr}
</div>
)
}
MyComponent.defaultProps = {
name : "์ด๋ฆ ์์",
age : "0",
addr : "์ฃผ์ ์์",
}
MyComponent.prototype = {
name : Proptypes.string,
age : Proptypes.number,
addr : Proptypes.string
}
export default MyComponent;
- props ๊ฐ ๋ฐ์์ค๊ธฐ
return (
<div>
3 : {name} {/* props.name */}
1 : {age}
2 : {addr}
</div>
)
- props ๊ธฐ๋ณธ ๊ฐ ์ค์ ํ๊ธฐ
MyComponent.defaultProps = {
name : "์ด๋ฆ ์์",
age : "0",
addr : "์ฃผ์ ์์",
}
- props ํ์ ๊ฒ์ฆ
MyComponent.prototype = {
name : Proptypes.string,
age : Proptypes.number,
addr : Proptypes.string
}