1. ๊ฐ์
์ด์ ์ปดํฌ๋ํธ, React Elements, DOM Elements์ ๋ํ ๊ฐ๋ ์ ์ดํด๋ ์ ๋ฒ ํฌ์คํ ๋ค์ ํตํด ์กํ์ ๊ฒ์ด๋ค. ์ด์ ๋ ์ปดํฌ๋ํธ๋ฅผ ์ง์ง ์ฌ์ฉํ๊ธฐ ์ํด ์ปดํฌ๋ํธ์ ์ข ๋ฅ์ ๊ทธ๊ฒ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ๋ค.
2. ์ปดํฌ๋ํธ์ ์ข ๋ฅ
์ปดํฌ๋ํธ์ ์ข ๋ฅ์๋ ํฌ๊ฒ ํจ์ํ ์ปดํฌ๋ํธ์ ํด๋์คํ ์ปดํฌ๋ํธ๊ฐ ์๋ค. ํด๋์คํ ์ปดํฌ๋ํธ๋ ์ฐ๋ ๋ฐฉ๋ฒ์ด ๋ณต์กํ๊ณ ์ด๋ ต๋ค๋ ์๊ฒฌ์ด ๋ง์์ ์์ฆ ์์ฃผ ์ฌ์ฉ๋๋ ๊ฒ์ ํจ์ํ ์ปดํฌ๋ํธ์ด๋ค.
ํจ์ํ ์ปดํฌ๋ํธ๋ ๋ง ๊ทธ๋๋ก ํจ์ ํํ๋ก ๋์ด์๋ค. ๋ค์ ์์๋ฅผ ๋ณด์.
์ด๊ฑฐ ๋ง๊ณ ์ต๋ช ํจ์ ํํ๋ก ์จ๋ ๋๋ค.
const Welcome = (props) => {
//...
}
ํด๋์คํ ์ปดํฌ๋ํธ๋ ์ฐ๋ฆฌ๊ฐ ์๋ฐ ๊ฐ์ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ฅผ ์ธ ๋ ํ์ธํ ์ ์๋ ํํ ๊ทธ๋๋ก ์ด๋ค. ๋ค๋ฅธ ์ฌํ ๊ฐ์ฒด ์งํฅ ์ธ์ด ์ ํด๋์ค ์ฒ๋ผ ์์ฑ์ ๋ํ ๊ฐ์ง๊ณ ์๋ค.
์ปดํฌ๋ํธ์ ๋ํ ๊ธฐ์ด๋ฅผ ํํํ๊ฒ ํ๊ธฐ ์ํด์๋ ํด๋์คํ ์ปดํฌ๋ํธ๋ฅผ ๋จผ์ ๊ณต๋ถํ๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฐ๋ค. ์ฐ๋ฆฌ๋ ์์ ์์ฃผ ์ฌ์ฉํ๋ ํจ์ํ ์ปดํฌ๋ํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ผ๋ก ์ดํด๋ณผ ๊ฒ์ด๋ค.
2. ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ
โ ์ปดํฌ๋ํธ์ ์ด๋ฆ์ ๋ฌด์กฐ๊ฑด ์ฒซ ๊ธ์๊ฐ ๋๋ฌธ์์ฌ์ผ ํ๋ค!
Q. ์? A. ๊ทธ๊ฒ์ React.createElements() ํจ์๊ฐ ๋จ์ DOM ํ๊ทธ์ ์ฌ์ฉ์ ์ ์ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ๋ถํ๋ ๋ฐฉ์ ๋๋ฌธ์ด๋ค.
์ฐ๋ฆฌ๋ ์ปดํฌ๋ํธ๊ฐ DOM Elements๊น์ง ๋๋ ๊ณผ์ ์ ๋ํด์ ์ ๋ฒ ํฌ์คํ
๋ค์์ ์์ธํ ๋ฐฐ์ ๋ค. ์ปดํฌ๋ํธ๋ ๋ถ์ด๋นต ํ์ด๊ณ , ๊ทธ๊ฒ์ ํ ๋๋ก React Elements๋ฅผ ๋ง๋ ๋ค. JSX์์๋ ํด๋น ๊ณผ์ ์ JSX ํ์ผ์ด ๋์ ํด์ฃผ์ง๋ง, ์ผ๋ฐ์ ์ธ JS ํ์ผ์ด๋ฉด React.createElements()๋ฅผ ์ด์ฉํด์ ์ปดํฌ๋ํธ์ ๊ตฌํ์ฒด์ธ React Elements๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด React Elements๊ฐ DOMReact.render ํจ์๋ฅผ ๋ง๋์ ์ง์ง DOM elements๊ฐ ๋๋ค.
์ด ๊ณผ์ ์ค ์ปดํฌ๋ํธ์์ React Elements๋ฅผ ๋ฝ์๋ด๋ ๊ณผ์ ์ ๋ณด์. ์ปดํฌ๋ํธ ์ค์๋ ๋จ์ DOM ํ๊ทธ๋ฅผ ์ด์ฉํ ์ปดํฌ๋ํธ๊ฐ ์์ ์ ์๊ณ , ์ฐ๋ฆฌ๊ฐ ์ง์ ์ ์ํ ํจ์ํ ์ปดํฌ๋ํธ๋ ์์ ์ ์๋ค.
Welcome ์ปดํฌ๋ํธ๋ ์ฐ๋ฆฌ๊ฐ ๋ง๋ค์๊ธฐ์ ๊ทธ ๋ด๋ถ๋ฅผ ๋ค์ฌ๋ค๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
React.createElements ํจ์๊ฐ ๋จ์ DOM ํ๊ทธ๋ก ์ด๋ฃจ์ด์ง ์ปดํฌ๋ํธ์ ์ฌ์ฉ์ ์ ์ ์ปดํฌ๋ํธ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ๋ถํ๋์ง ์๋๊ฐ? ๋ฐ๋ก ์ปดํฌ๋ํธ์ ์ ๊ธ์๊ฐ ๋๋ฌธ์์ธ์ง ์๋ฌธ์์ธ์ง ํ์ธํด์ ๊ตฌ๋ถํ๋ค. DOM ํ๊ทธ๋ค์ ๋ชจ๋ ์ ๊ธ์๊ฐ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ ์๊ธฐ์ ๊ทธ๊ฒ์ ํตํด์ ์ฌ์ฉ์ ์ ์ ์ปดํฌ๋ํธ์ ๊ตฌ๋ถํ๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉ์ ์ ์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ๊ฒฝ์ฐ, ๋ฌด์กฐ๊ฑด ์ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ํด์ผํ๋ค.
โ ์ปดํฌ๋ํธ๊ฐ ๋๋๋ง ๋๋ ๊ณผ์
๊ณ์ ๋ฐ๋ณต์ด์ง๋ง ์ค์ํ ๋ด์ฉ์์ผ๋ก ๋ ๋ฐ๋ณตํ๊ฒ ๋ค. ์ปดํฌ๋ํธ์์ React Elements๋ ๊ตฌํ์ฒด๋ฅผ ๋ฝ์๋ด๋ ๊ฒ์ JSX ํ์ผ์ผ ๊ฒฝ์ฐ JSX ํ์ผ์ด ๋์ ํด์คฌ๋ค. (์ ๋ณด์ด๋ ๊ณณ์์ React.createElements()๋ฅผ ๋๋ฆผ.) ๊ทธ ํ ํด๋น Elements๊ฐ ๋๋๋ง ๋์ด ์ง์ง DOM Elements๊ฐ ๋๊ธฐ ์ํด์๋ ReactDOM.render๋ผ๋ ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ๋ค์์ ์์์ด๋ค.