let's get IT with DAVINA ๐ป
What is React? ๋ณธ๋ฌธ
React๋ก ๋๋ฒ์ ํ๋ก์ ํธ๋ฅผ ๋ค ์งํํ๋๋ฐ ์ React๋ฅผ ์ผ๋๊ฐ์ ์ด๋ค ์ฅ์ ์ด ์๋์ง ์ค์ค๋ก ์ง๋ฌธ์ ์ ๋๋ก ๋ต๋ ๋ชปํ๋ ๋ด ์์ ์ด ํ์ฌํด์ ๋ง์ ๋ค์ก๊ณ ์ ๋ฆฌ๋ฅผ ๋์ ์ฌ๋ด ๋๋ค๋น..๐ฅ
ํญ์ ์ด๊ฑด "์" ์๊ฒผ๊ณ , "์" ๋ง์ ์ฌ๋๋ค์ด ์ฐ๋์ง ์ ๋๋ ์๊ณ ์ฐ์ ๋ค๋น์ใ ใ ใ plz
What is React?
- React๋ ํ๋ก ํธ์ค๋ ๊ฐ๋ฐ์ ์ํ, ํ๋ก ํธ์ค๋ ๊ฐ๋ฐ์ ๋ ์ฝ๊ฒ ๋ง๋ค์ด์ฃผ๋ JavaScript ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ๊ธฐ์ ์ ๋ถ๋ฅ์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ๋ถ๋ฅํ์ง ์๊ณ , ๊ธฐ๋ฅ๋ณ๋ก ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๊ธธ ๊ถ์ฅ
๋ฆฌ์กํธ SPA๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์๋๋ก ๋ง๋ค์ด์ง ํด ์ฒด์ธ
npx create-react-app@latest ํด๋์ด๋ฆ
React์ 3๊ฐ์ง ํน์ง
- ์ ์ธํ (Declarative)
- ๋ฆฌ์กํธ๋ ํ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด HTML/CSS/JS๋ก ๋๋ ์ ์ ๊ธฐ ๋ณด๋ค๋
- ํ๋์ ํ์ผ์ ๋ช ์์ ์ผ๋ก ์์ฑํ ์ ์๊ฒ JSX๋ฅผ ํ์ฉํ ์ ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์งํฅํฉ๋๋ค.
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ (Component-Based)
- ๋ฆฌ์กํธ๋ ํ๋์ ๊ธฐ๋ฅ ๊ตฌํ์ ์ํด ์ฌ๋ฌ ์ข ๋ฅ์ ์ฝ๋๋ฅผ ๋ฌถ์ด๋ ์ปดํฌ๋ํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํฉ๋๋ค.
- ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌํ๋ฉด ์๋ก ๋ ๋ฆฝ์ ์ด๊ณ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, ๊ธฐ๋ฅ ์์ฒด์ ์ง์คํ์ฌ ๊ฐ๋ฐํ ์ ์์ต๋๋ค. (์ ์ง/๋ณด์ & ์ ๋ํ ์คํธ ๊ฐํธ)
- ๋ฒ์ฉ์ฑ (Learn Once, Write Anywhere)
- ๋ฆฌ์กํธ๋ JavaScript ํ๋ก์ ํธ ์ด๋์๋ ์ ์ฐํ๊ฒ ์ ์ฉ๋ ์ ์์ต๋๋ค.
- Facebook(→์ต๊ทผ์ Meta)์์ ๊ด๋ฆฌ๋์ด ์์ ์ ์ด๊ณ , ๊ฐ์ฅ ์ ๋ช ํ๋ฉฐ, React Native๋ก ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ๋ ๊ฐ๋ฅํฉ๋๋ค.
Component-Based ์ฌํ ๊ณต๋ถ
์ปดํฌ๋ํธ๊ฐ ๋ฌด์์ธ๊ฐ?
- ํ๋์ ๊ธฐ๋ฅ ๊ตฌํ์ ์ํ ์ฌ๋ฌ ์ข ๋ฅ์ ์ฝ๋ ๋ฌถ์
- UI๋ฅผ ๊ตฌ์ฑํ๋ ํ์ ์์
- React์ ์ฌ์ฅ
๊ฐ์ ๋ ๋ฆฝ์ ์ธ ๊ธฐ๋ฅ์ ๊ฐ์ง๋ฉฐ, UI์ ํ ๋ถ๋ถ์ ๋ด๋นํ๊ธฐ๋ ํ๋ ์ด๋ฌํ ์ปดํฌ๋ํธ๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋ค๊ณ ์กฐํฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋ค.
๋ชจ๋ ๋ฆฌ์กํธ๋ ์ต์ ํ ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด ์ปดํฌ๋ํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ์ ์ผ๋ก ๊ทผ์(root)์ด ๋๋ ์ญํ ์ ํฉ๋๋ค. ์ด ์ต์์ ์ปดํฌ๋ํธ๋ ๋ค๋ฅธ ์์ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ ์ด ๊ณ์ธต์ ๊ตฌ์กฐ(hierarchy)๋ฅผ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ํ์ํํ ์ ์์ต๋๋ค.
๊ธฐ์กด์ ๋ฐฐ์ ๋ HTML,CSS,JS๋ฅผ ์ด์ฉํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค์์ ๋, ํ๋์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พธ๊ธฐ ์ํด HTML์ ์์ ํ์ฌ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พธ๊ณ , CSS๋ฅผ ํตํด ์คํ์ผ ์์ฑ์ ์์ ํ๊ณ , ๋ณ๊ฒฝ๋ ๊ตฌ์กฐ์ ์คํ์ผ์ ๋ง์ถฐ JS๊ฐ DOM์ ์กฐ์ํ๊ฒ๋ ์์ ํด์คฌ์ด์ผ ํ๋ค.
โถ BUT React๋ฅผ ์ด์ฉํ๋ฉด?
์ปดํฌ๋ํธ๋ ๊ฐ์์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ผ๋ ์ํ๋ ์์ ์ฌํญ์ ๋ง์ถฐ ๊ธฐ์กด ์ปดํฌ๋ํธ ์์น๋ง ์์ ํด์ฃผ๋ฉด ๋๋ค.
๐ก REACT์ ๊ฐ์ฅ ์์ ๋จ์๋? → ์๋ฆฌ๋จผํธ
Component๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ
1. ํจ์๋ฅผ ๋ง๋ค๊ณ ์ด๋ฆ ์ง๊ธฐ (์ด๋ฆ์ ๋๋ฌธ์๋ก ์์)
2. ์ถ์ฝ์ ์ํ๋ HTML ๋ฃ๊ณ
(return () ์๊ดํธ ์์ ๋ฃ๊ธฐ, ๊ทธ ์์ ์๋ ๊ฑด ํ๊ทธ ํ๋๋ก ๋ฌถ์ด์ผํจ)
(์๋ฏธ์๋ <div>์ฐ๊ธฐ ์ซ์ผ๋ฉด fragment์ด์ฉ ๊ฐ๋ฅ <> </>)
3. ์ํ๋ ๊ณณ์์ <ํจ์๋ช />
<Modal /> //3. ์ํ๋ ๊ณณ์ <ํจ์๋ช
/>๋ฃ๊ธฐ
function Modal(){ //1. ํจ์๋ง๋ค๊ณ ์ด๋ฆ์ง๊ธฐ
return ( //2. ์ถ์ฝ์ ์ํ๋ html์ ๋ฃ๊ธฐ
<div className="modal">
<h2>์ ๋ชฉ</h2>
<p>๋ ์ง</p>
<p>์์ธ๋ด์ฉ</p>
</div>
)
}
โ ์ด๋ค ๊ฑธ component๋ก ๋ง๋ค๊น?
- ๋ฐ๋ณต ์ถํํ๋ HTML ๋ฉ์ด๋ฆฌ๋ค
- ์์ฃผ ๋ณ๊ฒฝ๋๋ HTML UI๋ค
- ๋ค๋ฅธ ํ์ด์ง ๋ง๋ค ๋๋ ์ปดํฌ๋ํธ๋ก ๋ง๋ฆ
๐ซ Component๋ฅผ ๋๋ฌด ๋ง์ด ๋ง๋ค ๋์ ๋จ์
- state ์ธ ๋ ๋ณต์กํด์ง
- ๋ฐ๋ผ์ ์์ component์์ ๋ง๋ state์ฐ๋ ค๋ฉด props๋ก ๋ฐ์์์ผํจ
'DEV_IN > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React๋ก TodoApp ๋ง๋ค๊ธฐ (1)Setup (4) | 2023.03.02 |
---|---|
JSX (2) | 2023.02.21 |
ํน์ ๋ฒํผ์ ๋๋ ์ ๋๋ง, ์ด๋ฒคํธ ์ฃผ๊ธฐ (6) | 2023.02.17 |
prevent scroll event with MODAL (์คํฌ๋กค ๋ฐฉ์ง-๋ชจ๋ฌ์ฐฝ) (5) | 2023.02.17 |
window.open ์์ฐฝ(ํ์ ์ฐฝ) ์ด๊ธฐ (0) | 2023.02.09 |