<star />
์ปดํฌ๋ํธ ๋ณธ๋ฌธ
1. ํจ์ ์ปดํฌ๋ํธ
function Welcome(props) {
return <h1>์๋
, {props.name}</h1>;
}
์ ์ฝ๋์์ Welcome ์ด๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ํจ์๊ฐ props์ ๊ฐ์ฒด๋ฅผ ๋ฐ์์ ์ธ์ฌ๋ง์ด ๋ด๊ธด ๋ฆฌ์กํธ ์๋ฆฌ๋จผํธ๋ฅผ ๋ฆฌํดํ๊ธฐ ๋๋ฌธ์ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ผ๊ณ ํ ์ ์์. ์๋ ๊ฒ ์๊ธด ๋๋ค์ ํจ์ ์ปดํฌ๋ํธ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
2. ์ปดํฌ๋ํธ ์ด๋ฆ ์ง๊ธฐ
์ปดํฌ๋ํธ์ ์ด๋ฆ์ ํญ์ ๋๋ฌธ์๋ก ์์ํด์ผ ๋จ.
์๋? ๋ฆฌ์กํธ๋ ์๋ฌธ์๋ก ์์ํ๋ ์ปดํฌ๋ํธ๋ฅผ DOM ํ๊ทธ๋ก ์ธ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
//HTML div ํ๊ทธ๋ก ์ธ์
const element = <div />;
//Welcome ์ด๋ผ๋ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ก ์ธ์
const element = <Welcome name="๋ณ๊น
" />;
3. ์ปดํฌ๋ํธ์ ํฉ์ฑ
์ฌ๋ฌ ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ํฉ์ณ์ ํ๋์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ปดํฌ๋ํธ์ ํฉ์ฑ์ด๋ค.
๋ฆฌ์กํธ์์๋ ์ปดํฌ๋ํธ ์์ ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์, ๋ณต์กํ ํ๋ฉด์ ์ฌ๋ฌ ๊ฐ์ ์ปดํฌ๋ํธ๋ก ๋๋ ์ ๊ตฌํํ ์ ์์.
function Welcome(props) {
return <h1>์๋
, {props.name}</h1>
}
function App(props) {
return (
<div>
<Welcome name="๋๋ณด์ด์ฆ" />
<Welcome name="๋ด์ง์ค" />
<Welcome name="๋ฅด์ธ๋ผํ" />
</div>
)
}
์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด props์ ๊ฐ์ ๋ค๋ฅด๊ฒ ํด์ Welcome ์ปดํฌ๋ํธ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
App์ด๋ผ๋ ์ปดํฌ๋ํธ๋ Welcome ์ปดํฌ๋ํธ ์ธ ๊ฐ๋ฅผ ํฌํจํ๊ณ ์๋ ์ปดํฌ๋ํธ๊ฐ ๋๋ค.
4. ์ปดํฌ๋ํธ ์ถ์ถ
ํฐ ์ปดํฌ๋ํธ์์ ์ผ๋ถ๋ฅผ ์ถ์ถํด์ ์๋ก์ด ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ปํ๋ค.
์ปดํฌ๋ํธ๊ฐ ์์์ง์๋ก ํด๋น ์ปดํฌ๋ํธ์ ๊ธฐ๋ฅ๊ณผ ๋ชฉ์ ์ด ๋ช ํํด์ ธ์, props๋ ๋จ์ํด์ง๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ๊ฐ๋ฐ ์๋๊ฐ ํฅ์๋จ.
๊ธฐ๋ฅ ๋จ์๋ก ๊ตฌ๋ถํ๋ ๊ฒ์ด ์ข๊ณ , ๋์ค์ ๊ณง๋ฐ๋ก ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ ํํ๋ก ์ถ์ถํ๋ ๊ฒ์ด ์ข๋ค.
์ถ์ถ ๊ณผ์ ๐๐ป
1) ๋๊ธ์ ํ์ํ๊ธฐ ์ํ Comment ๋ผ๋ ์ปดํฌ๋ํธ๋ ์์ฑ์์ ํ๋กํ ์ด๋ฏธ์ง์ ์ด๋ฆ ๊ทธ๋ฆฌ๊ณ ๋๊ธ ๋ด์ฉ๊ณผ ์์ฑ์ผ์ ํฌํจํ๊ณ ์์.
function Comment(props) {
return (
<div className="comment">
<div className="user-info">
<img className="avatar"
src={props.author.avatarUrl}
alt={props.author.name}
/>
<div className="user-info-name">
{props.author.name}
</div>
</div>
<div className="comment-text">
{props.text}
</div>
<div className="comment-date">
{formatDate(props.date)}
</div>
</div>
)
}
2) Avatar ์ถ์ถํ๊ธฐ
> props์ author ๋์ ์ข ๋ ๋ณดํธ์ ์ธ ์๋ฏธ๋ฅผ ๊ฐ๊ณ ์๋ user๋ฅผ ์ฌ์ฉํด๋ณด์.
function Avatar(props) {
return (
<img className="avatar"
src={props.user.avatarUrl}
alt={props.user.name}
/>
);
}
3) UserInfo ์ถ์ถํด์ Avatar ์ถ๊ฐํ๊ธฐ
> props์ author ๋์ ์ข ๋ ๋ณดํธ์ ์ธ ์๋ฏธ๋ฅผ ๊ฐ๊ณ ์๋ user๋ฅผ ์ฌ์ฉํด๋ณด์.
function UserInfo(props) {
return (
<div className="user-info">
<Avatar user={props.user} />
<div className="user-info-name">
{props.user.name}
</div>
</div>
)
}
4) ์ถ์ถํ ์ปดํฌ๋ํธ ์ ์ฉ์ํค๊ธฐ
function Comment(props) {
return (
<div className="comment">
<UserInfo user={props.author} />
<div className="comment-text">
{props.text}
</div>
<div className="comment-date">
{formatDate(props.date)}
</div>
</div>
)
}
> ์ถ์ถ๋ ์ปดํฌ๋ํธ์ ๊ตฌ์กฐ
'React ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์กฐ๊ฑด๋ถ ๋ ๋๋ง (0) | 2022.11.28 |
---|---|
์ด๋ฒคํธ ํธ๋ค๋ง (0) | 2022.11.26 |
State์ ์๋ช ์ฃผ๊ธฐ (0) | 2022.11.24 |
Hook (0) | 2022.11.23 |
Props (0) | 2022.11.23 |