React๋
๐ค React๋ ๋ฌด์์ธ๊ฐ?
ํ์ด์ค๋ถ์์ ์ ๊ณตํด์ฃผ๋ ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ, ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ผ๋ก ๋์ด ์์ด์ ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ค์ฃผ๋ฉด ๊ฐ๋ฐ์๊ฐ ์ค๊ณํ๋๋ก UI๋ฅผ ๋ง๋ค์ด ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ค.
์น ํ์ด์ง๋ฅผ ๋ง๋ค๊ธฐ์๋ html, css๋ก๋ ์ถฉ๋ถํ์ง๋ง html, css ๋ง์ผ๋ก ๋์ ์ธ ๋ฐ์ดํฐ๋ฅผ UI์ ๋ฟ๋ ค์ฃผ๊ธฐ์๋ ์ ํฉํ์ง ์๋ค. ์ด ๋ ๋ฆฌ์กํธ๋ฅผ ์ด์ฉํ๋ค๋ฉด ์ฌ์ฉ์์ ์ํธ์์ฉํ ์ ์๋ UI๋ฅผ ์์ฝ๊ฒ ๋ง๋ค ์ ์๊ธฐ๋๋ฌธ์ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉ!!
๐ฅธ ๊ทธ๋ผ ์ React๋ฅผ ์ฌ์ฉํ์ง?
๐ Component ๋จ์ ์์ฑ
์ปดํฌ๋ํธ๋ UI๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ๋ณ์ ์ธ ๋ทฐ ๋จ์๋ก์, UI๋ฅผ ๊ฐ๋ฐ์ ๋ ๊ณ ๋ผ๊ณ ํ๋ค๋ฉด, ์ปดํฌ๋ํธ๋ ๋ธ๋ก ์ญํ ์ ํ๊ฒ ๋๋ค. ์ด๋ฌํ ๋ธ๋ก์ ์กฐ๋ฆฝํด ํ๋์ ์์ฑํ์ ๋ง๋๋ ๊ฒ๊ณผ ๊ฐ๋ค. ์ด๋ฌํ ํน์ง์ ํ๋์ ์ปดํฌ๋ํธ๋ฅผ ์ฌ๋ฌ ๋ถ๋ถ์์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค. ๊ฐ๋ น, ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๊ณณ์ ๋ฒํผ์ด ํ์ํ๋ค๋ฉด, ๊ณตํต๋ ํ๋์ ๋ฒํผ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๊ณ ๊ทธ ์ปดํฌ๋ํธ๋ฅผ ํ์ํ ๊ณณ์ ๊ฐ์ ธ๋ค ์ฌ์ฉํ๋ฉด ๋๋ค.
์ด๋ฌํ ํน์ง์ ์์ฐ์ฑ๊ณผ ์ ์ง ๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ๋ค. ํ๋์ ์์์ ๋ณํ๊ฐ ๋ค๋ฅธ ์์๋ค์ ๋ณํ์ ์ํฅ์ ๋ฏธ์น๋ ๋ณต์กํ ๋ก์ง์ ์
๋ฐ์ดํธํ๋ ๊น๋ค๋ก์ด ์์
์ ๊ฒฝ์ฐ, ์ปดํฌ๋ํธ์ ์ฌ์ฌ์ฉ ๊ธฐ๋ฅ์ผ๋ก์ ๋ณด์ํ ์ ์๊ฒ ๋๋ค.
๐ JSX
JSX(Javascript + xml)๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ํ ํ์ฅ ๊ตฌ๋ฌธ์ผ๋ก์, ๋ฆฌ์กํธ์์ element(์์)๋ฅผ ์ ๊ณตํด ์ค๋ค. ์ฅ์ ์ ๋งค์ฐ ๋ค์ํจ!! ๋จ์ํ ๊ฐ๋ฐ์๊ฐ ๋งํฌ์ ์ฝ๋์ ์ต์ํ๋ค๋ฉด, ๊ทธ๊ฒ๋ง์ผ๋ก๋ JSX๋ฅผ ํตํด ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ฝ๊ฒ ์ ์ํ ์ ์๋ค๋ ์ฅ์ ์ด๋ค.
๐ Virtual DOM
์ ์ ์ ์ธํฐ๋์ ์ ์ํด ์ํ ๋ณํ๊ฐ ์ผ์ด๋๋ฉด ๋ธ๋ผ์ฐ์ ์๋ ์๋ฆฌ์ ์ํด ๋๋๋ง ๊ณผ์ ์ ๋ฐ๋ณตํ๊ฒ ๋๋ค. Vitual DOM์ ์ด๋ฌํ ๊ณผ์ ์ ์ํด ๋ฐ์ํ๋ ๋นํจ์จ์ฑ์ ์ต์ํํ๊ธฐ ์ํด ํ์ํ๊ฒ ๋์๋ค.
Virtual DOM์ ๊ฐ๋ ์ด ๊ธฐ์กด์ ์์ ์๋ ๊ฒ์ ์๋๋ค. ๋ํ, Virtual DOM ๊ฐ๋ ์ ์ ์ฉํ ์ ์ผํ ํ๋ก ํธ์ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ / ํ๋ ์์ํฌ๋ ์๋๋ค. ํ์ง๋ง, ๋ฆฌ์กํธ๋ ์ฑ๊ณต์ ์ผ๋ก Virtual DOM ๊ฐ๋ ์ ์ ์ฉํ ์ ๋ฐ ์ฃผ์๋ผ๊ณ ํ ์ ์๋ค.
โ Virtual DOM์ ์๋ ์๋ฆฌ
์ ์ ์ธํฐ๋์ ์ ์ํด View์ ๋ณํ๊ฐ ๋ฐ์ํ์ฌ 10๊ฐ์ ๋ ธ๋๋ฅผ ์์ ํด ์ฃผ์ด์ผ ํ๋ค๋ฉด, 10๋ฒ์ ๋ ์ด์์ ์ฌ๊ณ์ฐ, 10๋ฒ์ ๋ฆฌ๋๋๋ง์ด ํ์ํ๋ค๋ ๊ฒ
Virtual DOM์ ๋ณํ๊ฐ ๋ฐ์ํ๋ฉด, ์ค์ DOM์ ์ ์ฉ๋๊ธฐ ์ ์ Virtual DOM์ ์ฐ์ ์ ์ฉ์ ์์ผ, ์ค์ DOM์ ๋ฐ๋ก ์ ์ฉํ๋, Virtual DOM์ ์ ์ฉํ๋ ๊ฐ์ ์ฐ์ฐ ๋น์ฉ์ด ํ์ํ ๊ฑฐ๋ผ ์๊ฐํ์ค ์ ์์ง๋ง, Vitual DOM์ ๋๋๋ง ๊ณผ์ ์ด ํ์ ์๊ธฐ ๋๋ฌธ์ ์ฐ์ฐ ๋น์ฉ์ด ์ค์ DOM๋ณด๋ค ์ ๋ค.
Virtual DOM์์ ์ด๋ฌํ ์ฐ์ฐ์ด ๋๋๊ณ ๋๋ฉด, ์ต์ข ์ ์ธ ๋ณํ๋ฅผ ์ค์ DOM์ ์ ๋ฌํด์ค๋ค. ์ฆ, 10๋ฒ์ ์์ ์ ํ๋๋ก ๋ฌถ์ด ๋ฑ ํ ๋ฒ ์ ๋ฌํด ์ค๋ค. ๋ฌผ๋ก , ๋ ์ด์์ ๊ณ์ฐ๊ณผ ๋ฆฌ๋๋๋งํ๋ ๊ณผ์ ์ ๊ท๋ชจ๋ ์ปค์ง๊ฒ ์ง๋ง, ํ์๋ฅผ ์ค์ด๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํ ์ฐ์ฐ ๋น์ฉ์ ์ ๊ฒ ๋ง๋ค์ด ์ค๋ค.
๋ํ, Virtual DOM์ ์ด๋ค ๊ฒ ๋ฐ๋์๋์ง, ์ด๋ค ๊ฒ ๋ฐ๋์ง ์์๋์ง ์๋์ผ๋ก ํ์ ํ์ฌ ํ์ํ DOM ํธ๋ฆฌ๋ง ์ ๋ฐ์ดํธํ ์ ์๊ฒ ํด์ค๋ค.
๐ ๋ง๋ฌด๋ฆฌ
React๋ ์ฌ์ฉ์์ ์ํธ์์ฉํ ์ ์๋ UI๋ฅผ ์์ฝ๊ฒ ๋ง๋ค ์ ์์ผ๋ฉฐ, Component ๋จ์ ์์ฑ์ ํตํด ์์ฐ์ฑ๊ณผ ์ ์ง๋ณด์์ ์ฉ์ดํ๋ค.