๋ชจ๋ Component๋ค์ props๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฒ์ ๊ฐ์ง๊ณ ์๋ค
. component's์ props ๊ฐ์ฒด๋ component์ ์ ๋ณด
๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ, prop's ๊ฐ์ฒด์ ์ ๊ทผ
ํ๊ธฐ ์ํด์๋ this.props
๋ผ๋ ํํ์์ ์ฌ์ฉํด์ผ ํ๋ค.
string type์ด ์๋ ์ ๋ณด๋ { } ์์ ์์ฑ
ํด์ผ ํ๋ค.<Greeting name="Frarthur" town="Flundon" age={2} haunted={false} />
<Greeting myInfo={["top", "secret", "lol"]} />
component์ ์ ๋ณด๋ฅผ ๊ฐ๊ฐ์ component์ ์ ๋ฌ
ํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํํ ๋ฐฉ๋ฒ์ด๋ค.class render ํจ์์ return๋ฌธ์ this.props.name-of-information์ ์
๋ ฅ
ํ๋ค.class Greeting extends React.Component {
render() {
return <h1>Hi there, {this.props.firstName}</h1>;
}
}
export class Greeting extends React.Component {
render() {
if (this.props.signedIn === false) {
return <h1>GO AWAY</h1>;
} else {
return <h1>Hi there, {this.props.name}!</h1>;
}
}
}
๋ชจ๋ component์ props ๊ฐ์ฒด๋ children์ด๋ผ๋ ์์ฑ์ ๊ฐ๊ณ ์๋๋ฐ this.props.children
์ JSX syntax๋ก ์์ฑ๋ ์ฝ๋, opening/closing tag ์ฌ์ด์ ๋ชจ๋ ๋ด์ฉ์ return
ํ๋ค. ๊ทธ๋์ Children ์์ฑ์ ์ํด์๋ self-closing tag๊ฐ ์๋ opening/closing tag๋ก ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค.
<List> // opening tag
<li></li> // child
</List> // closing tag
// Childrend โ I am a child of BigButton.
<BigButton>
I am a child of BigButton.
</BigButton>
// Childrend โ <LilButton />
<BigButton>
<LilButton />
</BigButton>
// Childrend โ undefined
<BigButton />
props์ ์ด๋ค ๊ฐ๋ ์ ๋ฌ๋์ง ์์์ ๋, default message๋ฅผ ์ง์ ํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ค. ์ด ๋ defaultProps์ ์์ฑ์ ๊ฐ์ฒด์ด๋ค.
class Example extends React.Component {
render() {
return <h1>{this.props.text}</h1>;
}
}
Example.defaultProps = { text: 'yo' };
props๋ก ํจ์๋ ์ ๋ฌํ ์ ์๋๋ฐ
์ด ๋ ๋ณดํต ์ ๋ฌ๋๋ ํจ์๋ event handler function ์ด๋ค. ์ด๋ ๊ฒ ์ ๋ฌ๋๋ ํจ์๋ class ์์ ์ ์
๋์ด์ผ ํ๋ค.
//props๋ก ํจ์ ์ ๋ฌํ๊ธฐ: this.props.ํจ์๋ช
export class Button extends React.Component {
render() {
return (
<button onClick={this.props.talk}>
Click me!
</button>
);
}
}
Event Handler ํจ์๊ฐ ์๋ component์์ onEventType ์ ํ์ attribute๋ฅผ ๋ถ์ฌํ๋ ๊ฒ์ ๋จ์ํ ์์ฑ์ ์ด๋ฆ์ ์ ํ๋ ํ์๋ก ํฐ ์๋ฏธ๊ฐ ์์ง๋ ์๋ค. ์ค์ Event๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๊ทธ๊ฒ์ ๋ฐ์ ๋์ํ๋ ํ์ Component์ด๊ธฐ ๋๋ฌธ์ด๋ค.
class MyClass extends React.Component {
handleHover() {
alert('I am an event handler.');
alert('I will listen for a "hover" event.');
}
render() {
return <Child onHover={this.handleHover} />;
}
}