3. React
Keyword
React๋?
React ์ปดํฌ๋ํธ
React ๋ฆฌ๋ ๋๋ง
IoC(Inversion of Control)
Library vs Framework
1. React?
๋ฆฌ์กํธ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(User Interface)๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ Javascript ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์๊ธฐํ ์ฒ๋ฅผ ํตํด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI๋ฅผ ๋ง๋ฆ์ผ๋ก ์์ฐ์ฑ์ด ์ฆ๊ฐํ๋ค. ๋ํ UI์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง์ ์ ๋ฐ์ดํธํ์ฌ ๋น ๋ฅธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ค.
2. React ์ปดํฌ๋ํธ
๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ UI๋ฅผ ๊ตฌ์ฑํ๋ ๋ ๋ฆฝ์ ์ธ ๋จ์๋ก ์ปดํฌ๋ํธ๋ ์ํ(state) ๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ UI๋ฅผ ํํํ๊ณ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
3. React ๋ฆฌ๋ ๋๋ง
React์์์ ๋ฆฌ๋ ๋๋ง์ด๋ renderํจ์์ ํธ์ถ์ ์๋ฏธ ์ด๊ฒ์ ์ค์ DOM์์ UI๋ฅผ ๋ค์ ๊ทธ๋ฆฌ๋๊ฒ์ ๋งํ๋ค. ์ปดํฌ๋ํธ์ state, props์ ๋ณ๊ฒฝ์ผ๋ก ์ธํ ์ปดํฌ๋ํธ UI ์ ๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ค.
์ํ๋ฅผ ๋ณ๊ฒฝํ๋ค๋ ๊ฒ์ setStateํจ์๋ฅผ ์คํํ ๋ ์ปดํฌ๋ํธ UI ์ ๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๊ฒ์ธ๋ฐ ์ด๋ renderํจ์๋ฅผ ํธ์ถํ๋ค๋ ์๋ฏธ๋ค.
์์ ๊ฐ์ ์ด์ ๋ก props์ ๋ณ๊ฒฝ ์ฌ๋ถ์ ์๊ด์์ด ๋ชจ๋ ํ์ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง ๋๋ค
์๊ฐํด๋ณด๋ฉด ํจ์ํ ์ปดํฌ๋ํธ์ return๊ฐ, ํด๋์ค ์ปดํฌ๋ํธ์ renderํจ์์ JSX๋ฌธ๋ฒ์ผ๋ก ์์ ์ปดํฌ๋ํธ๋ฅผ ํธ์ถํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฆฌ๋ ๋๋ง ๋๋๊ฒ์ด ๋น์ฐํจ
props๊ฐ ๋ณ๊ฒฝ๋ ๋, ์ปดํฌ๋ํธ๊ฐ ์
๋ฐ์ดํธ ๋์ง ์๋ ์ด์ ?
props๊ฐ setStateํจ์๋ฅผ ํตํด ์ฌ๋ฐ๋ฅธ ์ ๋ฐ์ดํธ๊ฐ ๋์ง ์์์ ๊ฒฝ์ฐ
props์ ๋ฐ์ดํฐ ์ฐธ์กฐ๊ฐ ๋์ผํ ๊ฒฝ์ฐ
Javascript์ ์ฐธ์กฐ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ(์์ธํ๋ ์กฐ๊ธ ๋ ๋ณต์กํจ, ์๋ณ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ์์ญ์ ๊ฐ๋ ์ด ์์)์ ๋ณต์ฌํ๊ธฐ ๋๋ฌธ์ ๋์ผ ๋ฉ๋ชจ๋ฆฌ๊ณต๊ฐ์ ์ฐธ์กฐํ๊ฒ ๋๋ฏ๋ก props ๊ฐ์ฒด๋ฅผ ์ง์ ๋ณ๊ฒฝํ๊ฒ ๋ ๊ฒฝ์ฐ React๊ฐ ๊ฐ์งํ์ง ๋ชปํจ
4. IoC(Inversion of Control)
Framework์ ์ฃผ์ํ ํน์ง์ผ๋ก ํ๋ก๊ทธ๋จ์ ํ๋ฆ ์ ์ด๋ฅผ ๊ฐ๋ฐ์๊ฐ ์๋ ํ๋ ์์ํฌ์ ์์ํ๋ ๊ฐ๋ ์ด๋ค.
๋ฆฌ์กํธ์ ๋ํด์ ์ฐพ์๋ณด๋ฉด view๋ง์ ์ ๊ฒฝ์ฐ๋ ํ๋ ์์ํฌ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ ์ค๋ช ํ๋ค.
๊ฐ๋ฐ์๋ ๊ทธ์ ๊ท์น์ ๋ฐ๋ผ ์ปดํฌ๋ํธ๋ฅผ ์ ์ธํ๊ณ ์กฐํฉํ์ฌ UI๋ฅผ ์ค๊ณํ๊ธฐ๋ง ํ๋ฉด ์ปดํฌ๋ํธ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ, ๋ ๋๋ง, ์ ๋ฐ์ดํธ, ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ๋ฆฌ์กํธ๊ฐ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ค.
JSX๋ Javascript์ ํ์ฅ๋ ๋ฌธ๋ฒ์ผ๋ก XML์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฅด๋ฉฐ HTML ๋งํฌ์ ์ฒ๋ผ ์์ฑํ๋ฉด ๋ฆฌ์กํธ๊ฐ ์์์ element๋ฅผ ์์ฑํ๊ณ ์ด JSX๋ฅผ ํตํด UI๋ฅผ ์ ์ธ์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐํ๊ณ ๊ฐ๋ ์ฑ ๋๊ฒ ์์ฑํ ์ ์๋ค.
5. Library vs Framework
์ ์ด์ ์์ ๊ฐ ๋๊ตฌ์๊ฒ ์๋์ง๋ก ๊ตฌ๋ถํ ์ ์๋ค.
Library
๊ฐ๋ฐ์์๊ฒ ์ ์ด ๊ถํ์ด ์์ด ํ์ํ ๊ธฐ๋ฅ์ ํธ์ถํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋จ๋ ์ฌ์ฉํ๊ฑฐ๋ ๋๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ์ ์กฐํฉํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
์๋ฅผ ๋ค๋ฉด, Redux ์ ์ญ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ React์ ์กฐํฉ์ด ์๋ค.
Framework
๊ฐ๋ฐ์๋ ํ๋ ์์ํฌ์ ๊ท์น์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ํ๋ ์์ํฌ๊ฐ ํ๋ฆ์ ์ ์ดํด ํ์ํ ๊ธฐ๋ฅ์ ํธ์ถํ๋ค.
ํ๋ ์์ํฌ๋ ๋ด๋ถ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ๊ณ ์๋ค.
๋ฆฌ์กํธ๋ ๊ท์น์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ ๋กญ๊ฒ ์กฐํฉํ์ฌ ์ฌ์ฉํ๋ฏ๋ก ๋ ๊ฐ์ง ์ฑ๊ฒฉ์ ๋ชจ๋ ๊ฐ์ง๊ณ ์์
ํค์๋ ์ถ๊ฐ ์ ๋ฆฌ
DOM
Virtual DOM
๋ฆฌ๋ ๋๋ง ์ต์ ํ(useMemo, useCallback)
Last updated