3.React
React๋?
์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ
React ์ปดํฌ๋ํธ
์๋ ํจ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง ํ๋์ props
(properties
์ ์งง์ ํํ) ๊ฐ์ฒด ์ธ์๋ฅผ ๋ฐ์ ํ React ์๋ฆฌ๋จผํธ๋ฅผ ๋ฐํํ๋ฏ๋ก ์ ํจํ React ์ปดํฌ๋ํธ์ด๋ค.
React
์์ ์ปดํฌ๋ํธ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์ผ๋ถ๋ฅผ ๋ํ๋ด๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋์ ์ฝ๋ ๋จ์์ด๋ค. ์ปดํฌ๋ํธ๋ ๋ ํฐ UI๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ๋น๋ฉ ๋ธ๋ก์ผ๋ก ์๊ฐํ ์ ์์ผ๋ฉฐ ๋์ ๋ฐ ๋ชจ์์ ๊ฒฐ์ ํ๋ ๋
ผ๋ฆฌ, state(์ํ) ๋ฐ props๋ฅผ ํฌํจํ ์ ์๋ค.
์ปดํฌ๋ํธ๋ functional์ด๊ฑฐ๋ ํด๋์ค ๊ธฐ๋ฐ์ผ ์ ์๋ค. Functional ์ปดํฌ๋ํธ๋ ๋จ์ํ props๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ์๋ค์ด๊ณ JSX ์์๋ฅผ ์ถ๋ ฅ์ผ๋ก ๋ฐํํ๋ ๊ธฐ๋ฅ์ด๋ค. ๋ฐ๋ฉด์ ํด๋์ค ๊ธฐ๋ฐ ์ปดํฌ๋ํธ๋ React.Component ํด๋์ค๋ฅผ ํ์ฅํ๊ณ JSX ์์๋ฅผ ๋ฐํํ๋ ๋ ๋๋ง ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ JavaScript ํด๋์ค์ด๋ค.
์ปดํฌ๋ํธ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋์ด UI ์์์ ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ํ์ฉํ ์๋ ์๋ค. ๋ฐ๋ผ์ ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ๋ถ๋ถ์ผ๋ก ๋ณต์กํ UI๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค.
React
๋ UI ์์๋ฅผ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ div, span ๋ฐ ๋ฒํผ๊ณผ ๊ฐ์ ๋ค์ํ ๋ด์ฅ ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํ๋ค. ๋ํ ๊ฐ๋ฐ์๋ ์์ฉ ํ๋ก๊ทธ๋จ UI์ ํน์ ๋ถ๋ถ์ ๋ํ๋ด๊ธฐ ์ํด ๊ณ ์ ํ ์ฌ์ฉ์ ์ง์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ์ ์๋ค. ์ด๋ฌํ ์ฌ์ฉ์ ์ง์ ์ปดํฌ๋ํธ๋ ์์ฉ ํ๋ก๊ทธ๋จ ์ ์ฒด์์ ์ฌ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ UI๋ฅผ ๋ณด๋ค ์ฝ๊ฒ โโ์ ์ง ๊ด๋ฆฌํ๊ณ ์์ ํ ์ ์๋ค.
React ๋ฆฌ๋ ๋๋ง
React
์์ ๋ฆฌ๋ ๋๋งํ๋ ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์
state(์ํ)์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์
๋ฐ์ดํธํ๋ ํ๋ก์ธ์ค๋ฅผ ๋งํ๋ค. ์ปดํฌ๋ํธ ์์์ state(์ํ) ๋๋ props๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค React๋ ์๋์ผ๋ก ์ปดํฌ๋ํธ ์์์ ํด๋น ํ์ ์ปดํฌ๋ํธ ์์๋ฅผ ๋ฆฌ๋ ๋๋งํ์ฌ ์
๋ฐ์ดํธ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ํ๋ค.
๋ฆฌ๋ ๋๋ง์ UI ์ ๋ฐ์ดํธ์ ๋ณด๋ค ํจ์จ์ ์ด๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ์ ๊ทผ ๋ฐฉ์์ ํ์ฉํ๋ฏ๋ก React์ ํต์ฌ ๊ธฐ๋ฅ์ด๋ค. ์ํ์ ๋ณํ๋ฅผ ๋ฐ์ํ๊ธฐ ์ํด DOM์ ์๋์ผ๋ก ์กฐ์ํ๋ ๋์ React๋ ๊ฐ์ DOM๊ณผ diffing ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ UI๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐ ํ์ํ ์ต์ ๋ณ๊ฒฝ ์ธํธ๋ฅผ ๊ฒฐ์ ํ๋ค. ์ฆ, UI์ ํ์ํ ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธ๋๋ฏ๋ก ํ์ด์ง ์ ๋ฐ์ดํธ์ ํ์ํ ์์ ๋์ด ์ค์ด๋ค๊ณ ์ฑ๋ฅ์ด ํฅ์๋๋ค.
React๋ ๋ํ useEffect ๋ฐ shouldComponentUpdate์ ๊ฐ์ ๋ค์ํ ํํฌ ๋ฐ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋(lifecycle methods)๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋ ๋๋งํ๋ ์๊ธฐ์ ๋ฐฉ๋ฒ์ ์ ์ดํ ์ ์๋ค. ์๋ฅผ ๋ค์ด shouldComponentUpdate๋ฅผ ์ฌ์ฉํ์ฌ ์ props ๋๋ state๊ฐ ํ์ฌ ๊ฒ๊ณผ ๋ค๋ฅธ์ง ํ์ธํ์ฌ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ๋ฐฉ์งํ ์ ์๋ค.
๋ฆฌ๋ ๋๋ง์ด ํญ์ ํ์ํ๊ฑฐ๋ ๋ฐ๋์งํ ๊ฒ์ ์๋๋ผ๋ ์ ์ ์ ์ํ๋ ๊ฒ์ด ์ค์ํ๋ค. ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ฐ๋๋ผ JavaScript ๋๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ DOM์ ์๋์ผ๋ก ์ ๋ฐ์ดํธํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ผ ์ ์๋ค. ๋ํ ๊ณผ๋ํ ๋ฆฌ๋ ๋๋ง์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ผ๋ฏ๋ก ์ปดํฌ๋ํธ ์ ๋ฐ์ดํธ๋ฅผ ์ต์ ํํ๊ธฐ ์ํด ๋ฉ๋ชจ์ด์ ์ด์ ๋๋ shouldComponentUpdate์ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค.
IoC(Inversion of Control)
์ ์ด ์ญ์ ์ด๋ ๋ฌด์์ผ๊น? ๊ฐ์ฅ ๊ฐ๋จํ ์ค๋ช ํ์๋ฉด ์ฉ์ด ๊ทธ๋๋ก ์ฝ๋์ ๋ก์ง์ด ์ผ๋ฐ์ ์ธ ์ ์ด ํ๋ฆ์ด ์๋๋ผ ์ญ์ ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฐ๋ฆฌ๋ React ํ๊ฒฝ์์ view๊ฐ ๋ฌด์์ ํ๋์ง ์ ์ํ์ง ์๊ณ (๋ช
๋ นํ) view๊ฐ ์ด๋ป๊ฒ ๋ณด์ผ์ง๋ฅผ ์ ์ธํ๋ค.(์ ์ธํ)
React
์์ IoC(Inversion of Control)
๋ ๊ฐ๋ฐ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ state(์ํ)์ ๋์์ ๋ช
์์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ์๋๋ผ ํ๋ ์์ํฌ๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ํ๋ฆ์ ์ ์ดํ๋ โโ๋ฐฉ์์ผ๋ก ์ดํดํ ์ ์๋ค.
React
๊ฐ IoC
๋ฅผ ๊ตฌํํ๋ ์ฃผ์ ๋ฐฉ๋ฒ ์ค ํ๋๋ ์ปดํฌ๋ํธ ์์๊ฐ ์์ฒด state(์ํ) ๋ฐ props๋ฅผ ์์ ๋ฐ ๊ด๋ฆฌํ๊ณ ์ฝ๋ฐฑ ๋ฐ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ํตํด ๋ค๋ฅธ ์ปดํฌ๋ํธ ์์์ ํต์ ํ๋ ์ปดํฌ๋ํธ ์์ ์ํคํ
์ฒ๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ช
๋ นํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํ๋ state(์ํ)์ ๋์์ ์ง์ ํ๋ ๋ณด๋ค ์ ์ธ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ์ด ๊ฐ๋ฅํ๋ค.
React
๋ ๋ํ IoC
๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ ์์์ ์ข
์์ฑ ์ฃผ์
์ ๊ด๋ฆฌํ๋ค. ์๋์ผ๋ก ์ข
์์ฑ์ ์ธ์คํด์คํํ๊ณ ์ปดํฌ๋ํธ ์์์ ์ฃผ์
ํ๋ ๋์ React
๋ ๊ฐ์ DOM ๋ฐ ์กฐ์ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ์ฌ ํ์์ ๋ฐ๋ผ ์ปดํฌ๋ํธ ์์๋ฅผ ์๋์ผ๋ก ์ฃผ์
ํ๊ณ ์
๋ฐ์ดํธํ๋ค. ์ด๋ฅผ ํตํด ์ปดํฌ๋ํธ ์์ ๋ฐ ํด๋น ์ข
์์ฑ์ ๊ด๋ฆฌํ๋ ๋ฐ ๋ณด๋ค ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์๋ค.
๋ํ React
๋ useState
๋ฐ useEffect
์ ๊ฐ์ ๋ค์ํ ํํฌ๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋ณด๋ค ์ ์ธ์ ์ด๊ณ ๊ธฐ๋ฅ์ ์ธ ๋ฐฉ์์ผ๋ก state(์ํ) ๋ฐ side effects๋ฅผ ๊ด๋ฆฌํ ์ ์๋๋ก ํ๋ค. ์ด๋ ๋ช
๋ นํ ์ฝ๋์ ํ์์ฑ์ ์ค์ด๊ณ ์ ํ๋ฆฌ์ผ์ด์
ํ๋ฆ ๊ด๋ฆฌ์ ๋ํ ๋ณด๋ค ์ง๊ด์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ๋ค.
์ ๋ฐ์ ์ผ๋ก React์ IoC ๊ตฌํ์ ์ ์ธ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐ ํจ์จ์ ์ธ ์ปดํฌ๋ํธ ์์ ๊ด๋ฆฌ์ ์ค์ ์ ๋๊ณ ์์ฉ ํ๋ก๊ทธ๋จ ๊ตฌ์ถ์ ๋ํ ๋ชจ๋์ ๋ฐ ํ์ฅ ๊ฐ๋ฅํ ์ ๊ทผ ๋ฐฉ์์ ํ์ฉํ๋ค.
์ฐธ๊ณ ๋ธ๋ก๊ทธ ํ๋ก ํธ์๋์์์ Inversion of Control
์์ ๋ธ๋ก๊ทธ์์ ํด๋น ๋ด์ฉ์ ๋ํด์ ์ฐธ๊ณ ํ์๋๋ฐ ์ ์ด์ ์ญ์ ์ ๊ณต๋ถํ๋ค๋ณด๋ ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ๊ณผ ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ์ ์์๋ณด๊ฒ ๋๊ณ ์ถ์ํ ๋ฑ๋ฑ... ์๊ฐํด๋ด์ผ ํ ๋ถ๋ถ๋ค์ด ๋ง์ ๊ฒ ๊ฐ๋ค.
๋ช ๋ นํ(์ ์ฐจ์ ) ํ๋ก๊ทธ๋๋ฐ์ ๋น์ ์ด ์ด๋ค ์ผ์ ์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ์ ๊ดํ ๊ฒ์ด๊ณ , ์ ์ธ์ ํ๋ก๊ทธ๋๋ฐ์ ๋น์ ์ด ๋ฌด์์ ํ ๊ฒ์ธ๊ฐ์ ๊ดํ ๊ฒ์ด๋ค.
์ฐธ๊ณ ๋ธ๋ก๊ทธ ๋ช ๋ นํ vs ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ
Library VS Framework
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ง๋ ์ ์ด ๋ฐ ์ฑ ์์ ์ ๋๋ค.
Library
๊ฐ๋ฐ์๊ฐ ํน์ ์์ ์ ์ํํ๊ธฐ ์ํด ์ฌ์ฌ์ฉํ ์ ์๋ ๋ฏธ๋ฆฌ ์์ฑ๋ ์ฝ๋ ๋ชจ์์ด๋ค.
๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์์ ํ ์ ์ดํ ์ ์๊ณ ์ธ์ ์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ ์ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ํน์ ์์ ์ ์ํํ๊ธฐ ์ํด ๊ฐ๋ฐ์๊ฐ ํธ์ถํ ์ ์๋ ์ผ๋ จ์ ๋๊ตฌ ๋๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์ํคํ ์ฒ๋ ์ ์ด ํ๋ฆ์ ์ ์ฉํ์ง ์์ผ๋ฉฐ ๊ธฐ์กด ๊ธฐ๋ฅ์ ๋ณด๊ฐํ๊ณ ํ์ฅํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ค.
Framework
์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ์ํ ํน์ ๊ตฌ์กฐ ๋ฐ ์ ์ด ํ๋ฆ์ ์ ๊ณตํ๋ ์ฌ์ ๊ตฌ์ถ๋ ๋๊ตฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ง์นจ ์งํฉ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ด ๊ตฌ์ถ๋๋ ๋ฐฉ์๊ณผ ํด๋น ๊ตฌ์ฑ ์์๊ฐ ์๋ก ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ์ง์ ํ๋ ์ผ๋ จ์ ๊ท์น, ํจํด ๋ฐ ์ถ์ํ๊ฐ ํฌํจ๋๋ค.
์ข ์ข MVC ๋๋ MVVM๊ณผ ๊ฐ์ ๋ฏธ๋ฆฌ ์ ์๋ ์ํคํ ์ฒ๋ฅผ ์ ๊ณตํ๋ฉฐ ๊ฐ๋ฐ์๊ฐ ํน์ ์ฝ๋ฉ ์คํ์ผ ๋ฐ ํจํด์ ์ค์ํ๋๋ก ์๊ตฌํ๋ค.
Last updated