<star />
Props ๋ณธ๋ฌธ
๋ค๋ค ์๋ค์ถ์ด ๋ฆฌ์กํธ๋ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ด๋ค.
๊ทผ๋ฐ ๋๋ ๋นก๋๊ฐ๋ฆฌ ๊ทธ๋ฐ์ง Props์ ๊ฐ๋ ์ ๋ค์ ์ ๋ฆฌํ๊ณ ์ ํ๋ค.
์ปดํฌ๋ํธ๋ค์ด ๋ชจ์ฌ์ ํ๋์ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ฑํ๊ณ , ๋ ์ด๋ฌํ ์ปดํฌ๋ํธ๋ค์ด ๋ชจ์ฌ์ ์ ์ฒด ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ค.
๋ฆฌ์กํธ ์ปดํฌ๋ํธ์์ ์ ๋ ฅ์ Props๊ณ , ์ถ๋ ฅ์ ๋ฆฌ์กํธ ์๋ฆฌ๋จผํธ๋ค.
๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ ์ญํ ์ ์ด๋ ํ ์์ฑ๋ค์ ์ ๋ ฅ์ผ๋ก ๋ฐ์์ ๊ทธ์ ๋ง๋ ๋ฆฌ์กํธ ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑํ์ฌ ๋ฆฌํดํด ์ฃผ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋๊น, ์ปดํฌ๋ํธ๋ ๋ง๋ค๊ณ ์ ํ๋๋๋ก Props(์์ฑ) ๋ฅผ ๋ฃ์ผ๋ฉด ํด๋น ์์ฑ์ ๋ง์ถฐ ํ๋ฉด์ ๋ํ๋ ์๋ฆฌ๋จผํธ๋ฅผ ๋ง๋ค์ด ์ฃผ๋ ๊ฒ์.
์ด๊ฒ์ ๋ง์น ๋ถ์ด๋นต์ ๊ตฝ๋ ๊ณผ์ ๊ณผ ๋น์ทํ๋ฌด๋๋ค.
๋ถ์ด๋นต ํ๋ ๊ณณ ๊ฐ ๋ณด๋ฉด ๋ถ์ด๋นต์ ๋ง๋๋ ๊ธฐ๊ณ๊ฐ ์์ต๋๋ค.
๋ถ์ด๋นต ๊ธฐ๊ณ๋ ๋ถ์ด ๋ชจ์์ ํ์ด ์ฌ๋ฌ ๊ฐ ์๊ณ , ๊ฑฐ๊ธฐ์ ๋ฐ์ฃฝ์ ๋ถ์ด์ ๋ถ์ด๋นต์ ๋ง๋ญ๋๋ค.
์ด๊ฒ์ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์๋ฆฌ๋จผํธ๊ฐ ๋ง๋ค์ด์ง๋ ๊ณผ์ ๊ณผ ๋น์ทํฉ๋๋ค.
๋ฆฌ์กํธ ์ปดํฌ๋ํธ = ๋ถ์ด๋นต ํ
๊ฐ ๋ถ์ด๋นต ์น๊ตฌ๋ค = ๋ฆฌ์กํธ ์๋ฆฌ๋จผํธ
๋ถ์ด๋นต์ ๋ค์ด๊ฐ๋ ์ฌ๋ฃ๋ค = Props
์ด ๊ณผ์ ์ ๊ฐ์ฒด์งํฅ ๊ฐ๋ ์์ ๋์ค๋ ํด๋์ค์ ์ธ์คํด์ค์ ๊ฐ๋ ๊ณผ ๋น์ทํ์ง์.
๋ถ์ด๋นต ํ๋ง ์์ผ๋ฉด ๊ณ์ํด์ ๋ถ์ด๋นต์ ๋ง๋ค์ด๋ผ ์ ์๋ ๊ฒ์.
1. Props์ ๊ฐ๋
- ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์์ ๋์ ๋ณด์ด๋ ๊ธ์๋ ์๊น ๋ฑ์ ์์ฑ์ ๋ฐ๊พธ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ ์ ์ฌ๋ฃ๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ.
- ์ปดํฌ๋ํธ์์ ์ ๋ฌํ ๋ค์ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์.
2. Props์ ํน์ง
- ์ฝ๊ธฐ ์ ์ฉ (Read-Only)
- ์์ํจ์ (pure function)
๋ชจ๋ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ Props ๋ฅผ ์ง์ ๋ฐ๊ฟ ์ ์๊ณ , ๊ฐ์ Props ์ ๋ํด์๋ ํญ์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ ์ค๋ผ.
3. Props ์ฌ์ฉ๋ฒ
- ์ปดํฌ๋ํธ์ ํค-๊ฐ ์ ํํ๋ก ๋ฃ์.
function App(props) {
return (
<Profile
name="ํ"
introduction="์๋
ํ์ธ์, ๋๋ณด์ด์ฆ ํ์
๋๋ค."
viewCount={19981105}
/>
);
}
App ์ปดํฌ๋ํธ > Profile ์ปดํฌ๋ํธ > name, introduction, viewCount ๋ผ๋ ์ธ๊ฐ์ง ์์ฑ์ด ์์ > ์์ฑ์ ๊ฐ์ด ๋ชจ๋ Profile ์ปดํฌ๋ํธ์ props ๋ก ์ ๋ฌ๋จ
{
name: "์ง์ฐฝ๋ฏผ",
introduction: "์๋
ํ์ธ์, ๋๋ณด์ด์ฆ ํ์
๋๋ค.",
viewCount: 19981105
}
์ค๊ดํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌด์กฐ๊ฑด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ ๋ค์ด๊ฐ๋ค.
props์ ๊ฐ์ ๋ฃ์ ๋๋ ๋ฌธ์์ด ์ด์ธ์ ์ ์, ๋ณ์, ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ปดํฌ๋ํธ ๋ฑ์ด ๋ค์ด๊ฐ ๊ฒฝ์ฐ์๋ ์ค๊ดํธ๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ธ ์ฃผ์ด์ผ ํจ.
๋ฌผ๋ก ~ ๋ฌธ์์ด์ ์ค๊ดํธ๋ก ๊ฐ์ธ๋ ์๊ด ์์!
function App(props) {
return(
<Layout
width={2560}
height={1440}
header={
<header title="๋ฆฌ์กํธ ์งฑ์ด ๋ ๊ฑฐ์์." />
}
footer={
<Footer />
}
/>
)
}
์ค๊ดํธ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์์ ๊ฐ์ด props ์ ๊ฐ์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ๋ฃ์ ์ ์์.
'React ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์กฐ๊ฑด๋ถ ๋ ๋๋ง (0) | 2022.11.28 |
---|---|
์ด๋ฒคํธ ํธ๋ค๋ง (0) | 2022.11.26 |
State์ ์๋ช ์ฃผ๊ธฐ (0) | 2022.11.24 |
Hook (0) | 2022.11.23 |
์ปดํฌ๋ํธ (0) | 2022.11.23 |