๐ฑ React๋
React๋ Facebook (Meta)์์ ๊ฐ๋ฐํ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ์ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
(๊ฐํน ํ๋ ์์ํฌ๋ผ๊ณ ์๊ณ ๊ณ์ ๋ถ๋ค์ด ์๋๋ฐ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค ..)
์ฃผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค (UI)๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
๐ง React๋ฅผ ์ฌ์ฉํ๋ ์ด์
1๏ธโฃ ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์
React๋ HTML ์์๋ฅผ ์ง์ ์์ ํ์ง ์์๋,
์ํ(state)๋ง ๋ฐ๊ฟ์ฃผ๋ฉด ์์์ ํ๋ฉด(UI)์ ๋ค์ ๊ทธ๋ ค์ค๋ค.
์๋ฅผ ๋ค์ด, ๋ฒํผ์ ํด๋ฆญํด์ ์ซ์๋ฅผ ์ฆ๊ฐ์ํฌ ๋,
์ฐ๋ฆฌ๊ฐ DOM์ ์ง์ ๋ณด์ํ์ง ์์๋
์ํ๊ฐ ๋ฐ๋๋ฉด React๊ฐ ์๋์ผ๋ก UI๋ฅผ ์ ๋ฐ์ดํธํด์ค๋ค.
์ฆ, ๋ ์ ์ ์ฝ๋๋ก๋ ์์ธก ๊ฐ๋ฅํ UI๋ฅผ ๋ง๋ค ์ ์๋ ๊ฒ์ด๋ค.
2๏ธโฃ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ๊ตฌ์กฐ
React๋ ํ๋ฉด์ ์๊ณ ๋ ๋ฆฝ์ ์ธ ์ปดํฌ๋ํธ ๋จ์๋ก ๋๋์ด ๊ฐ๋ฐํ ์ ์๋๋ก ๋์์ค๋ค.
๊ฐ ์ปดํฌ๋ํธ๋ ์์ ๋ง์ state์ props๋ฅผ ๊ฐ์ง ์ ์์ด์ ์ฌ์ฌ์ฉ๊ณผ ์ ์ง๋ณด์์ ๋งค์ฐ ์ ๋ฆฌํ๋ค.
์๋ฅผ ๋ค๋ฉด, ๋ฒํผ์ด๋ ์นด๋, ๋ชฉ๋ก, ์ ๋ ฅ์ฐฝ ๋ฑ
ํ๋์ ์ปดํฌ๋ํธ๋ฅผ ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฌ์ฉํ ์ ์๋ค.
3๏ธโฃ ๊ฐ์ DOM
React๋ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ์ง์ DOM์ ๋ฐ์ํ๊ธฐ ์ ์
๋ฉ๋ชจ๋ฆฌ ์์ ๊ฐ์ DOM ์์ ๋จผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ณ์ฐํ ํ์
์ง์ง DOM๊ณผ ๋น๊ตํด์ ๋ฐ๋ ๋ถ๋ถ๋ง์ ์ต์ํ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค.
์ด๋ฌํ ๋ฐฉ์ ๋๋ถ์ ๋ณต์กํ ํ๋ฉด์์๋ ๋น ๋ฅด๊ณ ๋ถ๋๋ฌ์ด UI ์ฑ๋ฅ์ ๋ผ ์ ์๋ ๊ฒ์ด๋ค.
4๏ธโฃ ์ปค๋ฎค๋ํฐ์ ์ํ๊ณ
React๋ ์ ์ธ๊ณ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๋ ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ฌ์
๊ด๋ จ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋๊ตฌ, ํ ํ๋ฆฟ ๋ฑ์ด ๋งค์ฐ ํ๋ถํ๋ค.
์๋ฅผ ๋ค์ด์
์ํ ๊ด๋ฆฌ๋ Redux, Zustand, Recoil
๋ผ์ฐํ ์ React Router
API ํต์ ์ Tanstack Query, SWR
์คํ์ผ๋ง์ TailwindCSS, styled-components
๋ฑ์ด ์๋ค.
๋ํ, ๊ณต์ ๋ฌธ์๋ Stack Overflow ๊ฐ์ ์๋ฃ๋ ๋ง์์
๋ฌธ์ ๊ฐ ์๊ฒจ๋ ๊ฒ์ ๋ง์ผ๋ก๋ ๋๋ถ๋ถ์ ํด๊ฒฐํ ์ ์๋ค.
๐๏ธ React์ ํต์ฌ ๊ฐ๋
1๏ธโฃ JSX (JavaScript + XML)
JSX๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ HTML์ ์ง์ ์์ฑํ ์ ์๋๋ก ํด์ฃผ๋ React๋ง์ ํน๋ณํ ๋ฌธ๋ฒ์ด๋ค.
HTML๊ณผ ๋น์ทํ๊ฒ ๋ณด์ด์ง๋ง, ์ฌ์ค์ JavaScript ์ฝ๋์ธ ๊ฒ์ด๋ค.
const element = <h1>Hello, React!</h1>;
์ด๋ฐ ์ฝ๋๋ ์ค์ ๋ก๋ Babel์ด๋ผ๋ ๋๊ตฌ์ ์ํด
React.createElement() ํจ์ ํธ์ถ ์ฝ๋๋ก ๋ณํ๋์ด ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ค.
๐ ๋ธ๋ผ์ฐ์ ๋ JSX๋ฅผ ๋ฐ๋ก ์ดํดํ์ง ๋ชปํ๋ฏ๋ก, JSX๋ JS๋ก ๋ณํ๋์ด ์คํ๋๋ ๊ฒ์ด๋ค.
2๏ธโฃ ์ปดํฌ๋ํธ
์ปดํฌ๋ํธ๋ React์์ ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๊ฐ์ฅ ์์ ๋ค์์ด๋ค.
๊ฐ๊ฐ์ ๋ฒํผ, ์นด๋, ํค๋ ๋ฑ์ ๋ชจ๋ ์ปดํฌ๋ํธ๋ก ํํํ ์ ์๋ค.
์ปดํฌ๋ํธ๋ ํฌ๊ฒ ํจ์ํ ์ปดํฌ๋ํธ์ ํด๋์คํ ์ปดํฌ๋ํธ๋ก ๋๋๋ค.
์์ ์๋ ํด๋์คํ์ ๋ง์ด ์ผ๋ค๊ณ ํ์ง๋ง,
์์ฆ์๋ ํจ์ํ ์ปดํฌ๋ํธ + ํ (hooks) ์กฐํฉ์ด ํ์ค์ด๋ผ๊ณ ํ๋ค.
function Greeting(props) {
return <h1>Hello, {props.name}</h1>;
}
3๏ธโฃ Props (Properties)
props๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ์์ ์ปดํฌ๋ํธ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ด๋ค.
React์์ ์ปดํฌ๋ํธ ๊ฐ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
์ด๋ฌํ props๋ ์ฝ๊ธฐ ์ ์ฉ์ด๊ธฐ ๋๋ฌธ์, ์์ ์ปดํฌ๋ํธ์์๋ props๋ฅผ ์์ ํ ์ ์๋ค.
4๏ธโฃ State (์ํ)
State๋ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๊ด๋ฆฌ๋๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ก์จ,
์ฌ์ฉ์์ ์ ๋ ฅ, ๋ฒํผ ํด๋ฆญ, ํ์ด๋จธ ๋ฑ์ ์ํฉ์ ๋ฐ๋ผ ๊ฐ์ด ๋ณํ ์ ์๋ค.
React์์๋ useState๋ผ๋ ํ ์ ์ฌ์ฉํด์ ์ํ๋ฅผ ์ ์ธํ๊ณ ๊ด๋ฆฌํ๋ค.
const [count, setCount] = useState(0);
์ฌ๊ธฐ์์ count๋ ํ์ฌ ์ํ ๊ฐ์ด๊ณ ,
setCount๋ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ํจ์์ด๋ค.
๊ทธ๋ฆฌ๊ณ , State๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํด๋น ์ปดํฌ๋ํธ๋ ์๋์ผ๋ก ๋ค์ ๋๋๋ง๋๋ค.
5๏ธโฃ useEffect
useEffect๋ ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ์ฒ์ ๋ํ๋๊ฑฐ๋, ํน์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋
์๋์ผ๋ก ์คํ๋๋ ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ๋ ํ ์ด๋ค.
๋ํ์ ์ธ ์์๋ก๋
API ํธ์ถ, ํ์ด๋จธ ์ค์ , ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฑ๋ก ๋ฐ ์ ๊ฑฐ ๋ฑ๊ณผ ๊ฐ์ ์์ ๋ค์ด ์๋ค.
'๐ป๊ณต๋ถ ๊ธฐ๋ก > ๐ Frontend' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Frontend] ํจํค์ง ๋งค๋์ ์ ๋์ ๊ณผ์ (2) | 2025.06.04 |
|---|---|
| [Frontend] ํจํค์ง ๋งค๋์ (1) | 2025.06.03 |
| [Frontend] ๋ ๋๋ง์ 3๊ฐ์ง ๋ฐฉ์: CSR, SSR, SSG (2) | 2025.06.01 |
| [Frontend] ๋ ๋๋ง(Rendering)์ด๋ (0) | 2025.05.31 |
| [Frontend] React Router๋ก SPA์์ ํ์ด์ง ์ด๋ ๊ตฌํํ๊ธฐ (1) | 2025.05.27 |