๊ท๋ชจ๊ฐ ์ปค์ง๊ณ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ฉฐ ์์ฐ์ฑ์ ํฅ์์ํค๊ณ ๋ง์ ์์ ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ์ฝ๋ ์ ์ง ๋ณด์๋ฅผ ๋์ฑ ํธ๋ฆฌํ๊ฒ ํ๊ธฐ ์ํด ๋ค์ํ Frontend Framework(Library)๊ฐ ๋ฑ์ฅํ๊ฒ ๋ฉ๋๋ค. ๊ทธ ์ค ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ์ธ ๊ฐ์ง๊ฐ Angular, Vue, React ์ ๋๋ค.
2010๋ Google์์ ๊ฐ๋ฐํ Framework. TypeScript ๊ธฐ๋ฐ์ผ๋ก ๋งค์ฐ ์์ ์ ์ด๊ณ ํํํ Frontend App ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ฉฐ Framework๋ต๊ฒ ๋ค์ํ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด์์ต๋๋ค. ๋ฌด๊ฒ๊ณ ๋ฐฐ์ฐ๊ธฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
2014๋ Evan You๋ผ๋ ๊ฐ์ธ์ด ๊ฐ๋ฐํ Framework. ์ฝ๋๊ฐ ๊น๋ํ๊ณ ๋ฐฐ์ฐ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ๋์ค์ ์๊ฒผ์ง๋ง ์ฑ์ฅ ์๋๊ฐ ์ ๋ง ๋น ๋ฆ ๋๋ค.
Facebook์์ ๊ฐ๋ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ. ๋ฆฌ์กํธ๋ ์ค๋ก์ง View๋ง ๋ด๋น. ๊ทธ๋งํผ ๋ด์ฅ๋์ด ์๋ ๊ธฐ๋ฅ์ด ๋ถ์กฑํดย third-party ๋ผ์ด๋ธ๋ฌ๋ฆฌ(ex. React-router, Redux)๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ค.
ํ์ด์ค๋ถ์ ์ง์์ ์ธ ๊ด๋ฆฌ์ ํจ๊ป ์ํ๊ณ๊ฐ ํ์ฑํ ๋์ด ์์ผ๋ฉฐ ๋ค์ํ ์๋ฃ, ๊ทธ๋ฆฌ๊ณ React Native์ ์ฌ์ฉ์ผ๋ก ์ธํด ์ฌ์ฉ์๊ฐ ๊พธ์คํ ์ฆ๊ฐํ๋ค.
React๋ ํ์ด์ค๋ถ์์ ๊ฐ๋ฐํ๊ณ ๊ด๋ฆฌํ๋ย ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ฅผ ๋ง๋ค๊ธฐ ์ํ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์
๋๋ค. ๋ฆฌ์กํธ๋ย ๊ฐ์ ๋(Virtual Dom)ย ์ ํตํด UI๋ฅผ ๋น ๋ฅด๊ฒ ์
๋ฐ์ดํธํฉ๋๋ค.
๊ฐ์ ๋์ย ์ด์ UI ์ํ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์งํด์, ๋ณ๊ฒฝ๋ UI์ ์ต์ ์งํฉ์ ๊ณ์ฐํ๋ ๊ธฐ์ ์
๋๋ค. ์ด ๊ธฐ์ ๋๋ถ์ ๋ถํ์ํ UI ์
๋ฐ์ดํธ๋ ์ค๊ณ , ์ฑ๋ฅ์ ์ข์์ง๋๋ค.
์ฌํ์ฉ ๊ฐ๋ฅํ UI ๊ตฌ์ฑ ๋จ์
ํด๋์คํ ์ปดํฌ๋ํธ์์๋ renderย ํจ์๊ฐ ๊ผญ ์์ด์ผ ํ๊ณ , ๊ทธ ์์ ๋ณด์ฌ ์ฃผ์ด์ผ ํ JSX๋ฅผ ๋ฐํํฉ๋๋ค.
Hook ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๋ฉด์ ํจ์ํ ์ปดํฌ๋ํธ์์๋ state๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์๊ณ ๊ทธ ํ๋ถํฐ ํด๋์คํ ์ปดํฌ๋ํธ๋ณด๋ค๋ ํจ์ํ ์ปดํฌ๋ํธ๊ฐ ๋ ๋ง์ด ์ฌ์ฉ๋๊ธฐ ์์ํ์ต๋๋ค.
{ ... javascript... }
class
-> className
<div style={{color : "red"}}>Hello React</div>
-> ์์ฃผ ๊ฐ๋จํ ํ๋ก์ ํธ์์ ์ฌ์ฉ<div></div>
vs. <div />
<> ... </>
)JSX์ ํฐ ํน์ง ์ค ํ๋๋ ๋ด๋ถ ์์๋ค์ ๊ฐ์ธ๋ ์ต์์ ์์๊ฐ ์์ด์ผ ํฉ๋๋ค. Fragments(<> </>)๋ DOM์ ๋ณ๋์ ๋
ธ๋๋ฅผ ์ถ๊ฐํ์ง ์๊ณ ํ๋์ ์ปดํฌ๋ํธ ์์ ์ฌ๋ฌ ์์(์์)๋ค์ ๊ฐ๋จํ๊ฒ ๊ทธ๋ฃนํ ํ ์ ์๋ ๊ธฐ๋ฅ์
๋๋ค. ์์๋ค์ ๊ฐ์ธ๋ div
ํ๊ทธ์ ๋ถํ์ํ ์์ฑ์ ๋ง์ ์ ์์ด ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
์ฒ์ ์ ํ๋ ๋ฆฌ์กํธ ๋จ์ด, ๋ฌธ๋ฒ ๋ฑ ๋ชจ๋ ๊ฒ์ด ์ด์ํด์ ์ด๋ ต์ต๋๋ค. ํ์ง๋ง ๋ฆฌ์กํธ๋ฅผ ๊ณต๋ถํ๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ด ์ค๋ ฅ์ ์์ผ๋ฉด ๋์ฑ ํจ์จ์ ์ด๊ณ ๊ฐ๋
์ฑ ์ข์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ธธ๊ณ ๊ธด ์ฝ๋๊ฐ ๋์ค์๋ ์ผ๋ง๋ ๋ ์งง๊ณ ๊ฐ๋จํด์ง๊ฒ ๋ ์ง ๊ธฐ๋๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐธ ๊ฐ๋ฐ๊ณต๋ถ๋ ๋๋์ฑ ๊น๊ณ ์๋กญ๋ค๋ ๊ฒ์ ๋ค์ ํ๋ฒ ๊นจ๋ฌ์์ต๋๋ค..๐