๐ ์ปดํฌ๋ํธ
์ปดํฌ๋ํธ(Component) : ์ฑ์ ๊ธฐ๋ฅ์ ๋จ์๋ณ๋ก ์บก์ํํ๋ React์ ๊ธฐ๋ณธ ๋จ์
HTML ์์๋ฅผ ๋ฐํํ๋ ํจ์๋ ํด๋์ค์ ๊ฐ๋ค๊ณ ์๊ฐํด๋ ๋๋ค.
๋ฐ๋ผ์, ์ปดํฌ๋ํธ๋ ๋
๋ฆฝ์ ์ด๊ณ , ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋์ ์กฐ๊ฐ์ด๋ค.
์ปดํฌ๋ํธ์ ์ข ๋ฅ๋ก๋, 1. ํจ์ํ ์ปดํฌ๋ํธ, 2. ํด๋์คํ ์ปดํฌ๋ํธ๊ฐ ์๋ค.
๐ก ํจ์ํ ์ปดํฌ๋ํธ
๊ฐ๋จํ ์๋ก, ํจ์ํ ์ปดํฌ๋ํธ ํํ๋ฅผ ๋ณด์.
function Introduce() { return <h2>Hi, I am elice!</h2>; } ReactDOM.render(<Introduce />, document.getElementById('root'));
๐ก ํด๋์คํ ์ปดํฌ๋ํธ
ํจ์ํ ์ปดํฌ๋ํธ์ ๋น๊ตํ์ ๋, ์ฝ๊ฐ ๊ตฌ์กฐ๋ง ๋ค๋ฅธ ์ ๋๋ค.
๋ค๋ง, class ์ ์ธ ์, React.Component์ ๋ฉ์๋๋ค์ ์ฌ์ฉํ๊ธฐ ์ํด, extends๋ฅผ ์ด์ฉํด, React.Component๋ฅผ ์์
render( ) ํจ์์์, ๋ฐํ ํ , HTML ์์๋ฅผ return ์ผ๋ก ๋ฐํ
๊ฐ๋จํ ์๋ก, ํด๋์คํ ์ปดํฌ๋ํธ ํํ๋ฅผ ๋ณด์.
class Introduce extends React.Component { render() { return <h2>Hi, I am elice!</h2>; } } ReactDOM.render(<Introduce />, document.getElementById('root'));
๐ก ์ด ๋์ ๊ฐ๊ฐ, ์ธ์ ์ฌ์ฉํ๋๊ฐ ?
ํจ์ํ ์ปดํฌ๋ํธ
- ๋จ์ํ HTML UI๋ฅผ ๋ฐํํ๋ ๊ฐ๋จํ ์๋ฐ์คํฌ๋ฆฝํธ ํจ์๋ก ์์ฃผ ์ฌ์ฉํ๋ค.
- ๋จ์ํ, ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ , ๋ ๋๋ง ํ๋ฉด ๋์ด์ง ๋๋ฌธ์, ๋น์ํํ ์ปดํฌ๋ํธ๋ผ๊ณ ๋ ํ๋ค.
ํด๋์ค ์ปดํฌ๋ํธ
- ํด๋์ค ์ปดํฌ๋ํธ๋, "์ํ(State)"๋ฅผ ๊ตฌํํ ๋ ์ฌ์ฉํ๋ค.
- ์ฌ๊ธฐ์, "์ํ(State)"๋, React์ State๋ฅผ ์๋ฏธํ๋ฉฐ, ์ฝ๊ฒ ๋งํ๋ฉด, ์ปดํฌ๋ํธ์ ํ์ฌ ์ ์ฅ๋ ๊ฐ
- ์ด๋ฐ, "์ํ(State)"๋ฅผ ๊ฐ์ง๋, ํด๋์ค ์ปดํฌ๋ํธ๋ฅผ, ๋ค๋ฅธ ๋ง๋ก, ์ํํ ์ปดํฌ๋ํธ๋ผ๊ณ ๋ ํ๋ค.
- HTML์ ๋ฐํํ๋ render( ) ๋ฉ์๋๊ฐ ๊ตฌํ๋์ด, ๋ณต์กํ UI ๋ก์ง์ ๊ตฌํํ ๋ ํด๋์คํ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ค.
- ํนํ, State๋ฅผ ์ฌ์ฉํ ๋, ๋ฐ๋์(?) ํด๋์คํ ์ปดํฌ๋ํธ๋ก ๊ตฌํ์ด ๋์ด์ผ ํ๋ค.
๊ทธ๋ฌ๋, ๊ธฐ์ ์ด ๋ฐ๋ฌ ๋๋ฉด์, ์ด์ ๋, ์ฌ์ค, ํด๋์ค ์ปดํฌ๋ํธ์์๋ง, ๋ค๋ฃฐ ์ ์๋, ์ปดํฌ๋ํธ์ ์ํ(State)๋ฅผ, ํจ์ํ ์ปดํฌ๋ํธ์์๋ ๋ค๋ฃฐ ์ ์๊ฒ ๋์๊ณ , ๊ทธ๋ฌํ ๊ธฐ์ ์ ์ฐ๋ฆฌ๋, "ํ (hook)" ์ด๋ผ๊ณ ํ๋ค.
์ด๊ฒ์, ๋ค์์ ์ค๋ช ํ๋ ค๊ณ ํ๋ค. ( ์์ฃผ ์ค์ํ๊ธฐ ๋๋ฌธ ! )
๊ทธ๋ฆฌ๊ณ , ์์ฆ์ ์ฌ์ค, ํด๋์คํ ์ปดํฌ๋ํธ๋ณด๋จ, hook์ ์ด์ฉํ, ํจ์ํ ์ปดํฌ๋ํธ๋ก React๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ์ถ์ธ๋ผ๊ณ ํ๋ค.
'WEB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] spread (0) | 2021.03.22 |
---|---|
[JS] ๋ฐฐ์ด ๋ด์ฅํจ์ (0) | 2021.03.22 |
[React] JSX ๋ฌธ๋ฒ ๋ฐ ๋ ๋๋ง (0) | 2021.02.06 |
[React] ๊ฐ์ & JS์ ์ฐจ์ด์ (0) | 2021.02.03 |
[JS] DOM,Event,Node๊ฐ์ฒด (0) | 2021.02.03 |