Section2 Unit4 [React] Intro
๐ Chapter1. React Intro
• React๋ ์๋ฐ์คํฌ๋ฆฝํธ์ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ
• ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๋ฉด UI๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๊ณต๋ถํ ๋ฌธ๋ฒ๋ค์ด ์ ๋ค. ๋ํ ํ์ฌ๊น์ง ๋ง์ ์ฌ์ฉ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฐธ๊ณ ํ ๋ ํผ๋ฐ์ค๊ฐ ๋ง์ผ๋ฉฐ, ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉ์ด ์ฉ์ดํ๊ฒ ์ฝ๋ ๊ฐ๋ฐ์ ํ ์ ์๋ค. ๋ฟ๋ง ์๋๋ผ ๋ฆฌ์กํธ๋ฅผ ์๊ณ ์๋ค๋ฉด, React-Native๋ฅผ ํตํด ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ๋ ํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
• React์ ํน์ง
1. ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ (์ฌ์ฌ์ฉ๊ฐ๋ฅ)
2. ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ
3. ๋ฒ์ฉ์ฑ
4. Virtual DOM (๊ฐ์๋)
↓ React์์ ์ฌ์ฉ๋๋ JSX ๋ฌธ๋ฒ์ ์ ๋ฆฌํด๋ณด์๋ค.
๐ Chapter2. Create React App
• create-react-app์ผ๋ก ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์ ์๋ค.
npx create-react-app
• ๋ฆฌ์กํธ๋ก Random word ์ถ๋ ฅํ๊ธฐ
const word = ["๊ณ ์์ด์ผ์น", "๋๋์ด๋ฉ๋ฉ", "์๋์๋ฉ~", "์ค๋ฆฌ๊ฝฅ๊ฝฅ", "์ฐธ์์งน์งน"];
function getRandomIndex(length) {
return parseInt(Math.random() * length)
}
function App() {
return (
<div className="App">
<p>
{word[getRandomIndex(word.length)]}
</p>
</div>
);
}
โญ๏ธ ๊ณผ์ . React Twittler Intro
์ ์ฒด์ ์ผ๋ก ๋ฆฌ์กํธ๋ฅผ ๋ค๋ฃจ๋๋ฐ ์ต์ํด์ง๊ธฐ ์ํ ๊ณผ์ ์๋ค๊ณ ์๊ฐํ๋ค. ๋ค์ ์ ๋์์๋ ๋น์ทํ ๊ณผ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์๊ณ , ์ด๋ ค์ด ๋ถ๋ถ์ ์์ด์ ๋ฐ๋ก ๊ธฐ๋กํ์ง๋ ์์๋ ๋ ๊ฒ ๊ฐ๋ค.
create-react-app์ผ๋ก ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ , ์ปดํฌ๋ํธ๋ฅผ ๋ฐฐ์นํ๊ณ , ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๋ด์ฉ์ ๋ณด์ด๊ฒ ํ๋ ๊ฒ์ด ๋ชฉ์ ์ด์๋ค. ์กฐ๊ฑด๋ถ ๋ ๋๋ง์ ํ์ฉํ๊ณ , ์งค๋งํ๊ฒ font awesome๋ ์ฌ์ฉํ๋ค.
๐ฑ ์คํ QnA ์ธ์
์คํ QnA ์ธ์ ์์๋ ๋ง์ ๊ฑธ ๋ฐฐ์ธ ์ ์์๋ค. ์ด์ ๊น์ง๋ ๋ ธ์ ์๋ง ์ ๋ฆฌ๋ฅผ ํ์๋๋ฐ, ๋ธ๋ก๊ทธ์ ์ ๋ฆฌ๋ฅผ ํ ๋ฒ ํด๋ณผ๊น.
• JSX
๋ฆฌ์กํธ๊ฐ ์ฒ์ ๋์์ ๋๋ jsx๋ ์์์ง๋ง ํธ๋ฆฌํจ์ ๊ณ ๋ คํ์ฌ ํ์ด์ค๋ถ์์ ๋ง๋ค์๋ค. jsx๋ js๋ก ์์ฑํ๋ ๊ฒ๋ณด๋ค jsx๋ ์ฝ๋๋์ด ์ ๊ณ ํธ๋ฆฌํ๋ค. jsx๋ ๊ทธ๋ฌํ ์ด์ ๋ก ์๊ฒจ๋ฌ๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์์๋ ์ฝ์ง๋ ๋ชปํ๊ณ ์คํ๋ ๋ชปํ๋ค. ๋ฐ๋์ js๋ก ๋ณํ์ด ํ์ํ๋ค. ๋ณํ์ create-react-app์์ ์์์ ํด์ค๋ค..ใ ใ ์ด๊ฒ๊น์ง ๊น๊ฒ ๋ค์ด๊ฐ๋ฉด ๋ณต์กํ๋ค๊ณ ..!
• ์ปดํฌ๋ํธ
์ปดํฌ๋ํธ๋ ํ์์ ์นํ์ด์ง ํ๋ฉด์ ๋ณด๋ฉด์ ๋๋ฆ๋๋ก ์๊ธฐ๋ง์ ํ๊ณ ํ ๊ธฐ์ค์ ๊ฐ์ง๊ณ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฅํด๋ณด๋ ์ฐ์ต์ ํ๋๊ฒ ์ข๋ค.
ํ์ฌ๋ง๋ค ๋ค๋ฅด์ง๋ง ์ฌ์ฌ์ฉ์ฑ์ ์ํด์ ์ต๋ํ ์ชผ๊ฐ๋ ๊ฒ์ด ์ข๋ค.
• state ์ง๋ ์ ์ด์ง๋ง, state์ ๊ดํ ์ด์ผ๊ธฐ
state - ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ๋ ์ง์ญ๋ณ์
๋ฆฌ์กํธ ์ด์ ์ ์ธ์์์๋ ์๋ณธ ๋ฐ์ดํฐ์ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ๋ฐ์ดํฐ๊ฐ ๋ถ๋ฆฌ๊ฐ ๋์ด ์์๋ค.
- ์๋ณธ๋ฐ์ดํฐ
- ํ๋ฉด์ ํ์ํ ๋ฐ์ดํฐ (์๋ฅผ ๋ค๋ฉด dom.textContent)
- ๊ทธ๋์ ์๋ณธ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด dom์ ์ ๊ทผํด์ textContent๋ value๋ฅผ ๋ณ๊ฒฝํ๋ ์์ ์์ ์ ํ๋ค.
- ๋ฐ์ดํฐ ๋ณ๊ฒฝ → dom ๋ณ๊ฒฝ ์ด ๋๊ฐ์ง๊ฐ ๊ธฐ๋ณธ์์ ์ธ ์๋์๋ค.
์ด์ ๊ทธ๊ฑธ ๊ฐ๋ ฅํ๊ฒ ์ง์ํด์ฃผ๋ ๋ฆฌ์กํธ๊ฐ ํ์ํ๋ค.
• ๊ทธ๋ฆฌ๊ณ , Vite
์์ฆ์๋ ์๋์ ์ผ๋ก ๋น๋์๋๊ฐ ๋น ๋ฅธ Vite ๋ง์ด ์ฌ์ฉํ๋ค๊ณ ํ๋ค. vite๋ svelte react vue ์ ๋ถ ์ ์ ์ด ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์๋ค.
์๊ทธ๋๋ Vite, ์ต๊ทผ์ ๋ช ๋ฒ ๋ค์ ์ ์ด ์์ด์ ๊ถ๊ธํ์๋๋ฐ ๋ง์ด ์ฌ์ฉํ๋ ํธ๋ ๋๊ธด ํ๊ฐ๋ณด๋ค!
๐ ์ค๋์ ํ๊ณ
๋๋์ด ๋ฆฌ์กํธ์ ๋ค์ด๊ฐ๋ค. ๋ฆฌ์กํธ ์ฒซ๋ ์ด๋ผ ๋ณต์ตํ๋ค๋ ์๊ฐ์ผ๋ก ๋ฌด๋ํ๊ฒ ๋์ด๊ฐ๋ค. ๋ฆฌ์กํธ๊ฐ ๋ฌด์์ด๊ณ , ์ด๋ค ํน์ง์ ๊ฐ์ง๋์ง ๋ฆฌ๋ง์ธ๋ ํ ์ ์๋ ์๊ฐ์ด์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ์๋ ๋ฐ๋ก ์ ๋ฆฌํ ์ ์์ด ๋ง๊ตฌ ํ๊ฐ๊ฒจ ๋์๋ JSX ๋ฌธ๋ฒ์ ๋ํด์๋ ์ ๋ฆฌ๋ฅผ ์ข ํ ์ ์์๋ค. ์๋กญ๊ฒ ์๊ฒ ๋ ์ ์ JSX๋ Boolean, null, undefined๋ฅผ ๋ ๋๋งํ์ง ์๋๋ค๋ ๊ฒ. ์๋ฐ์คํฌ๋ฆฝํธ ๊ณ ์ฐจํจ์๋ ๋น๋๊ธฐ์ ๋ํด ๊ณต๋ถํ ๋๋์ ์ ํ ๋ค๋ฅด๊ฒ ๋๋ฌด ํธ-์…ํด. ์๊ฐ์ด ๋ง์ด ๋จ์์ ๋ค์ ์ง๋๋ ๋ณด๊ณ ์ด์ ์ ์ด๋ ค์ ๋ ๋ถ๋ถ๋ค ๋ณต์ต๋ ํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. (๋์ค์ด ๋ฌด์ญ๊ธด ํ๋ค……)
๊ทธ๋๋ ์ค๋๋ง์ ์ฌ์ ์๊ฒ ๋ฆฌ์กํธ์ ๊ดํด ์ ๋ฆฌ๋ฅผ ํ ์ ์์ด์ ์ค๋์ ๋จธ๋ฆฌ๋ฅผ ์กฐ๊ธ์ ์ํ ์ ์์๋ ๊ฒ ๊ฐ๋ค.
'Frontend Dev > ๐ฅ ์ฝ๋์คํ ์ด์ธ FE ๋ถํธ์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Section2 Unit6 [React] React State & Props (0) | 2023.05.22 |
---|---|
Section2 Unit5 [React] React SPA (0) | 2023.05.19 |
Section2 Unit3 JS/Node ๋น๋๊ธฐ - fetchAPI (0) | 2023.05.17 |
Section2 Unit3 JS/Node ๋น๋๊ธฐ - ๋น๋๊ธฐ์ฒ๋ฆฌ (0) | 2023.05.16 |
Section2 Unit3 JS/Node ๋น๋๊ธฐ - ๊ณ ์ฐจํจ์ ๋ฆฌ๋ทฐ & underbar ๊ณผ์ (0) | 2023.05.15 |