[REACT JS] ์๋ฆฌ๋จผํธ ๋ ๋๋ง
์๋ฆฌ๋จผํธ๋ React ์ฑ์ ๊ฐ์ฅ ์์ ๋จ์์ ๋๋ค.
์๋ฆฌ๋จผํธ๋ ํ๋ฉด์ ํ์ํ ๋ด์ฉ์ ๊ธฐ์ ํฉ๋๋ค.
const element = <h1>Hello, world</h1>;
๋ธ๋ผ์ฐ์ DOM ์๋ฆฌ๋จผํธ์ ๋ฌ๋ฆฌ React ์๋ฆฌ๋จผํธ๋ ์ผ๋ฐ ๊ฐ์ฒด์ด๋ฉฐ(plain object) ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. React DOM์ React ์๋ฆฌ๋จผํธ์ ์ผ์นํ๋๋ก DOM์ ์ ๋ฐ์ดํธํฉ๋๋ค.
์ฃผ์
๋ ๋๋ฆฌ ์๋ ค์ง ๊ฐ๋ ์ธ “์ปดํฌ๋ํธ”์ ์๋ฆฌ๋จผํธ๋ฅผ ํผ๋ํ ์ ์์ต๋๋ค. ๋ค์ ์ฅ์์ ์ปดํฌ๋ํธ์ ๋ํด ์๊ฐํ ์์ ์ ๋๋ค. ์๋ฆฌ๋จผํธ๋ ์ปดํฌ๋ํธ์ “๊ตฌ์ฑ ์์”์ด๋ฏ๋ก ์ด๋ฒ ์ฅ์ ์ฝ๊ณ ๋์ ๋ค์ ์ฅ์ผ๋ก ๋์ด๊ฐ ๊ฒ์ ๊ถํฉ๋๋ค.
DOM์ ์๋ฆฌ๋จผํธ ๋ ๋๋งํ๊ธฐ
HTML ํ์ผ ์ด๋๊ฐ์ <div>๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค.
<div id="root"></div>
์ด ์์ ๋ค์ด๊ฐ๋ ๋ชจ๋ ์๋ฆฌ๋จผํธ๋ฅผ React DOM์์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ “๋ฃจํธ(root)” DOM ๋ ธ๋๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
React๋ก ๊ตฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ฐ์ ์ผ๋ก ํ๋์ ๋ฃจํธ DOM ๋ ธ๋๊ฐ ์์ต๋๋ค. React๋ฅผ ๊ธฐ์กด ์ฑ์ ํตํฉํ๋ ค๋ ๊ฒฝ์ฐ ์ํ๋ ๋งํผ ๋ง์ ์์ ๋ ๋ฆฝ๋ ๋ฃจํธ DOM ๋ ธ๋๊ฐ ์์ ์ ์์ต๋๋ค.
React ์๋ฆฌ๋จผํธ๋ฅผ ๋ฃจํธ DOM ๋ ธ๋์ ๋ ๋๋งํ๋ ค๋ฉด ๋ ๋ค ReactDOM.render()๋ก ์ ๋ฌํ๋ฉด ๋ฉ๋๋ค.
const element = <h1>Hello, world</h1>;
ReactDOM.render(element, document.getElementById('root'));
์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ํ๋ฉด์ “Hello, world”๊ฐ ๋ณด์ผ ๊ฒ๋๋ค.
๋ ๋๋ง ๋ ์๋ฆฌ๋จผํธ ์ ๋ฐ์ดํธํ๊ธฐ
React ์๋ฆฌ๋จผํธ๋ ๋ถ๋ณ๊ฐ์ฒด์ ๋๋ค. ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑํ ์ดํ์๋ ํด๋น ์๋ฆฌ๋จผํธ์ ์์์ด๋ ์์ฑ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์๋ฆฌ๋จผํธ๋ ์ํ์์ ํ๋์ ํ๋ ์๊ณผ ๊ฐ์ด ํน์ ์์ ์ UI๋ฅผ ๋ณด์ฌ์ค๋๋ค.
์ง๊ธ๊น์ง ์๊ฐํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ํ๋ฉด UI๋ฅผ ์ ๋ฐ์ดํธํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ์๋ก์ด ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ReactDOM.render()๋ก ์ ๋ฌํ๋ ๊ฒ์ ๋๋ค.
์์๋ก ๋๋ฑ๊ฑฐ๋ฆฌ๋ ์๊ณ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
function tick() {
const element = (
<div>
<h1>Hello, world!</h1>
<h2>It is {new Date().toLocaleTimeString()}.</h2>
</div>
);
ReactDOM.render(element, document.getElementById('root'));}
setInterval(tick, 1000);
์ ํจ์๋ setInterval() ์ฝ๋ฐฑ์ ์ด์ฉํด ์ด๋ง๋ค ReactDOM.render()๋ฅผ ํธ์ถํฉ๋๋ค.
์ฃผ์
์ค์ ๋ก ๋๋ถ๋ถ์ React ์ฑ์ ReactDOM.render()๋ฅผ ํ ๋ฒ๋ง ํธ์ถํฉ๋๋ค. ๋ค์ ์ฅ์์๋ ์ด์ ๊ฐ์ ์ฝ๋๊ฐ ์ ์ํ ์ปดํฌ๋ํธ์ ์ด๋ป๊ฒ ์บก์ํ๋๋์ง ์ค๋ช ํฉ๋๋ค.
๊ฐ ์ฃผ์ ๊ฐ ์๋ก ์ฐ๊ด์ด ์๊ธฐ ๋๋ฌธ์ ๊ฑด๋๋ฐ์ง ์๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธํ๊ธฐ
React DOM์ ํด๋น ์๋ฆฌ๋จผํธ์ ๊ทธ ์์ ์๋ฆฌ๋จผํธ๋ฅผ ์ด์ ์ ์๋ฆฌ๋จผํธ์ ๋น๊ตํ๊ณ DOM์ ์ํ๋ ์ํ๋ก ๋ง๋๋๋ฐ ํ์ํ ๊ฒฝ์ฐ์๋ง DOM์ ์ ๋ฐ์ดํธํฉ๋๋ค.
๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ด์ฉํด ๋ง์ง๋ง ์์๋ฅผ ์ดํด๋ณด๋ฉด ์ด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๋งค์ด ์ ์ฒด UI๋ฅผ ๋ค์ ๊ทธ๋ฆฌ๋๋ก ์๋ฆฌ๋จผํธ๋ฅผ ๋ง๋ค์์ง๋ง React DOM์ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋ ํ ์คํธ ๋ ธ๋๋ง ์ ๋ฐ์ดํธํ์ต๋๋ค.
๊ฒฝํ์ ๋น์ถ์ด ๋ณผ ๋ ํน์ ์์ ์ UI๊ฐ ์ด๋ป๊ฒ ๋ณด์ผ์ง ๊ณ ๋ฏผํ๋ ์ด๋ฐ ์ ๊ทผ๋ฒ์ ์๊ฐ์ ๋ณํ์ ๋ฐ๋ผ UI๊ฐ ์ด๋ป๊ฒ ๋ณํํ ์ง ๊ณ ๋ฏผํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์์ ๋ฒ๊ทธ๋ฅผ ์์จ ์ ์์ต๋๋ค.