2ํ๋ 1ํ๊ธฐ์ ์ ๊ณต ์์ ๊ณผ ํํ ํ๋์ ํตํด html, css, js๋ฅผ ๋ฐฐ์ ๊ณ , ๋ฐฐ์ฐ๋ ๊ณผ์ ์์ ํ๋ก ํธ์ ํฅ๋ฏธ๊ฐ ์๊ฒผ๋ค. ์ฌ๋ฆ๋ฐฉํ์ ํํ์์ React ํธ๋์ ์ ํ์ ํ๊ณ , ํ๊ต์์ ์งํํ๋ SW ๊ฒฝ์ง๋ํ์ FE๋ก ์ฐธ์ฌํ๊ฒ ๋์ด์ ๊ณต๋ถ๋ฅผ ์์ํ๊ฒ ๋์๋ค.๋ฆฌ์กํธ๋ ์ง๊ธ
Component ๊ธฐ๋ฐ์ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ UI๋ฅผ ๋ ๋ฆฝ์ ์ธ Component๋ก ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐํ๋ ๋ฐฉ์์ด๋ค. ๋ถ๋ฆฌํ ๊ฐ๊ฐ์ Component๋ UI ์์, ๊ด๋ จ๋ ๋์์ ๊ฐ์ง๊ณ ์๊ณ , ์ฌ์ฌ์ฉ, ๋ชจ๋์ฑ์ ๋์๋ค. ๊ฐ๋ฐ์๋ Component ๊ธฐ๋ฐ์ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ
React๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ๋ณต์กํ๊ณ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ฐ์ง js์ ์ฌ๋ฌ ํ์ผ์ ๋ง๋๋ ๊ธฐ์ ์ด๋ค. React๋ฅผ ์ฌ์ฉํด์ ๋ง๋ค์ด๋ธ jsํ์ผ๋ค์ ์น๋ธ๋ผ์ฐ์ ์ ์ ๋ฌ๋์ด์ ๊ณ ์ ์ ์ธ ์น๋ธ๋ผ์ฐ์ ๊ฐ ์๋๋ผ ๋ง์น ํ๋ก๊ทธ๋จ์ฒ๋ผ ๋์๊ฐ ์ ์๊ฒ ๋ง๋ค์ด์ค๋ค. ์ด๋ฅผ React Applic
ํฐ๋ฏธ๋์ npm start๋ฅผ ์ ๋ ฅํด์ React๋ฅผ ์คํํ๋ฉด, srcํด๋ ์์ ์๋ index.js๊ฐ ์คํ์ด ๋๋ค. index.js๋ public ํด๋ ์์ ์๋ index.html์ id๊ฐ root์ธ div์์ ์์ App.js ํจ์๊ฐ ๋ฐํํ๋ ๊ฐ์ ๋ฃ์ด์ ํ๋ฉด์ ๋ณด์ฌ
์ฃผ๋ก React์์ Component๋ฅผ ๋ง๋๋๋ฐ ์ฌ์ฉ๋๋๋ฐ, html์ฒ๋ผ ํ๋ฉด์ ๋ํ๋๋ UI๋ฅผ ๊ทธ๋ฆฌ๋ ์ญํ ์ ํ๋ค. js์ ํ์ฅ ๋ฌธ๋ฒ์ด๊ณ , html๊ณผ ํผํฉํด์ ์ฌ์ฉํ ์ ์๋ค. ๋ฐ๋ผ์ html, css, js์ ๊ธฐ๋ณธ์ ์ธ ๋ถ๋ถ์ ์๊ณ ์๋ค๋ฉด ์ด๋ ต์ง ์๊ฒ ์ดํดํ๊ณ ์ฌ์ฉํ
1. State? State(์ํ)๋ ๊ณ์ํด์ ๋ณํํ๋ ๋์ ์ธ ๊ฐ, ์ํ์ ๋ฐ๋ผ ๊ฐ๊ฐ ๋ค๋ฅธ ๋์์ ํ๋ค. ์ด๋ฅผ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ React์ ๋น๋์ด ์ค๋ช ํด๋ณด์๋ฉด, Component๋ ๊ณ์ ๋ฐ๋๋ ๋์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ , ์ํ๋ฅผ ๋ฐ๊พธ๋ ๋ฑ์ ๊ด๋ฆฌ๋ ๊ฐ Component๊ฐ ์ง
1. Props ์ง๋ State ์ค์ต์์ ์งํํ Counter์์ ์ด๊ธฐ๊ฐ์ 0์ด ์๋๋ผ ์ง์ ํ๊ณ ์ถ์ผ๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? ์ด๋ Props ๊ฐ๋ ์ ์ฌ์ฉํ๋ค. ๋ถ๋ชจ Component์ธ App์์ ์์ Component์ธ Counter์๊ฒ ๊ฐ์ ์ ๋ฌํ๋ ๋ฐฉ์์ Props
๋ณดํต Component๋ ๊ฐ์ฒด์งํฅ์ธ์ด์ ์์กฐ์ธ ์ค๋ชฐํ ํฌ์์ ์จ ๋ง์ด๋ค. ์ค๋ชฐํ ํฌ์์ Component๋ ํ๋ฉด UI๋ฅผ ์ฒ๋ฆฌํ๋ ํด๋์ค๋ฅผ ์๋ฏธํ๋ค. Component๋ MVC(Model - View - Controller) ๊ตฌ์กฐ์ ๋ฐ๋ผ ๊ตฌํ๋ ํด๋์ค์ฌ์ผ ํ๋ค. Model์
Hook์ด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์์ ์ํ ๋ณํ์ ์ํ ๋ณํ์ ๋๋ฐํ๋ ์ฐ๊ด ์์ฉ์ ๊ฐ๋จํ๊ฒ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค. Hook์ React์์ ์ฒ์ ์ ์ฉ๋์๊ณ , Vue, Svelt์ ๊ฐ์ ํ๋ ์์ํฌ์์๋ ์ด๋ฅผ ์ฑํํ์๋ค. Hook์ React 16.8 version์ ์๋ก ๋์ ๋
2. React hook(์ฌํ) useRef useRef๋ ํจ์ํ ์ปดํฌ๋ํธ ์์์ DOM ์์ ํน์ ๋ณ์๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋ค. useRef๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋ ๋๋ง๋ค ๊ฐ์ด ์ ์ง๋๊ณ , ๊ฐ์ ์ฐจ์ด๋ฅผ ๋น๊ตํ๊ฑฐ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค.
์ฃผ๋ก React์์ Component๋ฅผ ๋ง๋๋๋ฐ ์ฌ์ฉ๋๋๋ฐ, html์ฒ๋ผ ํ๋ฉด์ ๋ํ๋๋ UI๋ฅผ ๊ทธ๋ฆฌ๋ ์ญํ ์ ํ๋ค. js์ ํ์ฅ ๋ฌธ๋ฒ์ด๊ณ , html๊ณผ ํผํฉํด์ ์ฌ์ฉํ ์ ์๋ค. ๋ฐ๋ผ์ html, css, js์ ๊ธฐ๋ณธ์ ์ธ ๋ถ๋ถ์ ์๊ณ ์๋ค๋ฉด ์ด๋ ต์ง ์๊ฒ ์ดํดํ๊ณ ์ฌ์ฉํ
State(์ํ)๋ ๊ณ์ํด์ ๋ณํํ๋ ๋์ ์ธ ๊ฐ, ์ํ์ ๋ฐ๋ผ ๊ฐ๊ฐ ๋ค๋ฅธ ๋์์ ํ๋ค. ์ด๋ฅผ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ React์ ๋น๋์ด ์ค๋ช ํด๋ณด์๋ฉด, Component๋ ๊ณ์ ๋ฐ๋๋ ๋์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ , ์ํ๋ฅผ ๋ฐ๊พธ๋ ๋ฑ์ ๊ด๋ฆฌ๋ ๊ฐ Component๊ฐ ์ง์ ๊ด๋ฆฌํ๊ฒ ๋๋ค.
Hook์ด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์์ ์ํ ๋ณํ์ ์ํ ๋ณํ์ ๋๋ฐํ๋ ์ฐ๊ด ์์ฉ์ ๊ฐ๋จํ๊ฒ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค. Hook์ React์์ ์ฒ์ ์ ์ฉ๋์๊ณ , Vue, Svelt์ ๊ฐ์ ํ๋ ์์ํฌ์์๋ ์ด๋ฅผ ์ฑํํ์๋ค.Hook์ React 16.8 version์ ์๋ก ๋์ ๋
useRef๋ ํจ์ํ ์ปดํฌ๋ํธ ์์์ DOM ์์ ํน์ ๋ณ์๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋ค. useRef๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋ ๋๋ง๋ค ๊ฐ์ด ์ ์ง๋๊ณ , ๊ฐ์ ์ฐจ์ด๋ฅผ ๋น๊ตํ๊ฑฐ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค.React ๊ณต์๋ฌธ์(https://ko.l