[week_08] React ๊ธฐ์ด โ (1) OT
1. SPA (Single Page Application)
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ์ต์ด ์ ์ ์์ฒญ์ ๋ณด๋ด๋ฉด, ์๋ฒ๋ก๋ถํฐ HTML์ ์ ๋ฌ ๋ฐ๋๋ค. ๊ทธ ํ ํ์ด์ง์ ๋ณ๊ฒฝ์ด ํ์ํ ๋ ๋ณ๊ฒฝ์ด ํ์ํ ๋ถ๋ถ์ JSON์ผ๋ก ์ ๋ฌ ๋ฐ๋๋ค. ์ด ๋, ํ์ด์ง์์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ๊ณ์ฐํ์ฌ ๋ค์ ๊ทธ๋ฆฌ๊ฒ ๋๋ค. (์ ํต์ ์ธ ํ์ด์ง์ ๊ฒฝ์ฐ, ๋ณ๊ฒฝ์ด ์์ ๋๋ง๋ค HTML์ ์๋ก ๋ฐ์์ ํ์ด์ง๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ๊ทธ๋ฆผ)
๐ React๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ด๋ฌํ ํ์๋ฅผ ํธ๋ฆฌํ๊ฒ ํ ์ ์๋ค!
2. React
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Component : React์ ๋ ๋ฆฝ์ ์ธ ๋จ์
- Virtual DOM : ๊ฐ์์ ์ธ ํํ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ , ReactDOM๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํด ์ค์ DOM๊ณผ ๋๊ธฐํํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋
- JSX : JavaScript ๋ด์์ UI๋ฅผ ์์ฑํ๊ธฐ ์ํด ๊ฐ๋ฐ์์๊ฒ ์ต์ํ ํ๊ฒฝ ์ ๊ณต, Template ๋ผ์ด๋ธ๋ฌ๋ฆฌ, HTML๊ณผ ์ ์ฌ
3. React์ ์ฅ์
1) ์์ฐ์ฑ / ์ฌ์ฌ์ฉ์ฑ
- Component์ Hook์ ํ์ฉ
- ์์ ๋จ์์ ๋ ๋ฆฝ์ ์ธ ์์๋ก ๊ฐ๋ฐ โก ์์ฐ์ฑ๊ณผ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ ํฅ์
- JSX๋ฅผ ํ์ฉํ์ฌ HTML ๋ด์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ํ ๊ณต๊ฐ์ ์ฝ์ ํ ์ ์์ด์ ๊ฐ๋ฐ์ด ๊ฐ๋จํด์ง๊ณ , ๋ค๋ฅธ ์ฌ๋์ ๊ฐ๋ฐ ์๋๋ฅผ ํ์ ํ๊ธฐ ์ฌ์์ง๋ค.
2) ํ๋ถํ ์๋ฃ / ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Fluent UI, Ant Design, styled components, Redux, Mobx, React Hook Form, ...
3) ๋ค์ํ ์ฌ์ฉ์ฒ
- ๋จ์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด์ธ์๋ React-Native์ ์ ์ฉํ์ฌ ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ iOS ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๊ฐ๋ฅ
4. React์ ํน์ง
1) HTML ๋ด์ ์ค๊ดํธ({})๋ฅผ ํ์ฉํด์ JavaScript ์ฝ๋ ์์ฑ ๊ฐ๋ฅ
2) ์ปดํฌ๋ํธ ํํ๋ก ํ๋์ ๋ธ๋ก์ ๋ง๋ค์ด์ ํ์ํ ๊ณณ์ ์กฐ๋ฆฝํ์ฌ ๊ฐ๋ฐ
3) ์ปดํฌ๋ํธ ๋ด์์ State๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋์ ์ผ๋ก ๊ด๋ฆฌ ๐ State๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๋ ๋๋ง(Rendering) ๋๋ค.