* ๊ฐ์ธ์ ํ์ต ๋ด์ฉ ๊ธฐ๋ก ์ค, ๊ทนํ ์ผ๋ถ์ ๋ด์ฉ๋ง ์์ฑ๋์์ต๋๋ค.
๋งํฌ๋ค์ด ํ์ผ ์์ฑ๋ฒ
git, github ์ฌ์ฉ๋ฒ
github desktop
React.js ๊ธฐ์ด
React๋ ์น ํ๋ ์์ํฌ๋ก, JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋๋ก์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ๋จ
- facebook์์ ์ ๊ณตํด์ฃผ๋ ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ vs ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ
๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ: ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ์ ์ปดํจํฐ์๊ฒ ์ํํด์ผ ํ ์์ ์ ์์ฐจ์ ์ธ ๋ช ๋ น์ด๋ค๋ก ๊ตฌ์ฑํ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ๋๋ค. ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ฝ๋๊ฐ ํ๋ก๊ทธ๋จ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ํ์ํ ์ ์ฐจ๋ฅผ ๋ช ์์ ์ผ๋ก ๊ธฐ์ ํ๋ฉฐ, ๋ณ์๋ฅผ ์ฌ์ฉํด ์ํ๋ฅผ ์ถ์ ํฉ๋๋ค. ๋ํ์ ์ธ ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก๋ C, C++, Java, Python ๋ฑ์ด ์์ต๋๋ค.
์ ์ธํ ํ๋ก๊ทธ๋๋ฐ: ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ก๊ทธ๋จ์ด ์ด๋ป๊ฒ ๋์ํ๋์ง์ ๋ํ ์ ์ฐจ๋ฅผ ์ค๋ช ํ๋ ๋์ , ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํ ์กฐ๊ฑด๊ณผ ์ ์ฝ ์กฐ๊ฑด์ ๋ช ์ํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ๋๋ค. ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ์์๋ ํ๋ก๊ทธ๋จ์ด ์ด๋ป๊ฒ ์ํ๋๋์ง์ ๋ํ ์ธ๋ถ ์ฌํญ์ ์ถ์ํํ์ฌ, ์ฝ๋๊ฐ ๋ ๊ฐ๊ฒฐํ๊ณ ์ดํดํ๊ธฐ ์ฌ์์ง๋๋ค. ๋ํ์ ์ธ ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก๋ SQL, Haskell, Prolog ๋ฑ์ด ์์ต๋๋ค.
๋ฆฌ์กํธ๋ ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๋ฐ๋ฅด๋ฉฐ ๊ฐ๋ฐ์๊ฐ UI์ ์ํ์ ๋์์ ์ ์ธ์ ์ผ๋ก ์ ์ํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ ์ฝ๋๊ฐ ๋ ๊ฐ๊ฒฐํ๊ณ ๊ฐ๋ ์ฑ์ด ์ข์์ง๋ฉฐ, ์ ์ง ๋ณด์๊ฐ ์ฌ์์ง๋๋ค.
React์ ํน์ง
- Data Flow
- Component ๊ธฐ๋ฐ ๊ตฌ์กฐ
- Virtual Dom
- Props and State
- JSX
JSX๋?
JSX๋ JavaScript XML์ ์ฝ์๋ก, React์์ UI๋ฅผ ์ ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฌธ๋ฒ.
JSX๋ HTML๊ณผ ๋น์ทํด ๋ณด์ด์ง๋ง JavaScript ์ฝ๋ ์์์ ์์ฑ๋๋ฉฐ ์ปดํ์ผ๋ฌ์ ์ํด ์์ํ JavaScript๋ก ๋ณํ๋จ
React ์ปดํฌ๋ํธ๋ JSX๋ก UI ๊ตฌ์กฐ๋ฅผ ์ ์ธํ๊ณ ์ด๋ฅผ ๋ ๋๋ง.
1. JSX์ ์ฃผ์ ํน์ง
HTML๊ณผ ๋น์ทํ ๋ฌธ๋ฒ์ผ๋ก UI๋ฅผ ์ ์ํ ์ ์์
๋ธ๋ผ์ฐ์ ์์ ์ง์ ์คํ๋์ง ์์ผ๋ฉฐ Babel ๊ฐ์ ๋๊ตฌ์ ์ํด JavaScript๋ก ๋ณํ๋จ
๋์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๊ฐ๋ฅ ({} ์ค๊ดํธ๋ก JavaScript ํํ์์ ์ฝ์ )
2. JSX์ ์ฅ์
๊ฐ๋ ์ฑ
์ง๊ด์ ์ธ ๋์ ๋ฐ์ดํฐ ๋ ๋๋ง
์ปดํฌ๋ํธ ๊ธฐ๋ฐ ๊ฐ๋ฐ
๋ฆฌ์กํธ ์ปดํฌ๋ํธ ๊ฐ๋
1. Props๋ฅผ ์ ๋ ฅ๋ฐ๊ณ , ๋ฆฌ์กํธ ์๋ฆฌ๋จผํธ๋ฅผ ๋ฐํํด ์ฃผ๋ ๊ฒ
2. ์ปดํฌ๋ํธ์ ์ด๋ฆ์ ํญ์ ๋๋ฌธ์๋ก ์์(ํ์ค์นผ)
Lifecycle : ์์ ์ฃผ๊ธฐ
๋ฆฌ์กํธ ๋ผ์ดํ์ฌ์ดํด์ ๊ฐ๋
๋ฆฌ์กํธ์ ๋ผ์ดํ์ฌ์ดํด์ ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋๊ณ , ์ ๋ฐ์ดํธ๋๋ฉฐ, ์ ๊ฑฐ๋ ๋ ์ผ์ด๋๋ ์ผ๋ จ์ ๊ณผ์ ์ ์๋ฏธ. ํด๋์คํ ์ปดํฌ๋ํธ์์ ๋ ๋ช ํํ๊ฒ ์ฌ์ฉ๋์์ง๋ง, ํจ์ํ ์ปดํฌ๋ํธ์์๋ useEffect Hook์ ํตํด ๋น์ทํ ๋์์ ๊ตฌํํ ์ ์์ต๋๋ค.
React component ๋ผ์ดํ์ฌ์ดํด์ 3๋จ๊ณ
- ๋ง์ดํธ (Mount): ์ปดํฌ๋ํธ๊ฐ ์ฒ์ DOM์ ์ถ๊ฐ๋ ๋ ๋ฐ์ํ๋ ๋จ๊ณ
- ์ ๋ฐ์ดํธ (Update): ์ํ๋ props๊ฐ ๋ณ๊ฒฝ๋์ด ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๋ ๋๋ง๋ ๋ ๋ฐ์ํ๋ ๋จ๊ณ
- ์ธ๋ง์ดํธ (Unmount): ์ปดํฌ๋ํธ๊ฐ DOM์์ ์ ๊ฑฐ๋ ๋ ๋ฐ์ํ๋ ๋จ๊ณ
fetch vs axios ๋น๊ต
fetch → ๋ธ๋ผ์ฐ์ ๊ธฐ๋ณธ ๋ด์ฅ API (์์ ํ๋ก์ ํธ๋ ๊ฐ๋จํ ์์ฒญ์ ์ ํฉ)
axios → ๋ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ด ๋ง์ React ํ๋ก์ ํธ์์ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋จ
React Hook
๋ฆฌ์กํธ ํ (React Hooks)์ ํจ์ํ ์ปดํฌ๋ํธ์์๋ ํด๋์ค ์ปดํฌ๋ํธ์ ๊ธฐ๋ฅ(์: ์ํ ๊ด๋ฆฌ, ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ)์ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค.
ํ ์ ๋ฆฌ์กํธ v16.8๋ถํฐ ๋์ ๋์์ผ๋ฉฐ, useState, useEffect, useContext ๋ฑ ๋ค์ํ ํ ์ด ์ ๊ณต๋จ.
์ปค์คํ ํ
๊ฐ๋ : ์ปค์คํ ํ ์ ๋ฆฌ์กํธ์ ๊ธฐ๋ณธ ํ (useState, useEffect, useRef ๋ฑ)์ ์กฐํฉํ์ฌ ์ฌ์ฌ์ฉํ ์ ์๋ ๋ก์ง์ ๋ง๋๋ ํ ์ ๋๋ค.
- ์ปค์คํ ํ ์ ๋ฐ๋ณต๋๋ ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ๋ค๋ฅธ ์ปดํฌ๋ํธ์์๋ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ญ๋๋ค.
- ์ด๋ฆ ๊ท์น: use๋ก ์์ํ๋ ํจ์๋ก ์์ฑํด์ผ ํฉ๋๋ค. ์: useCounter
๋ฆฌ์กํธ ์ด๋ฒคํธ (Event)
๋ฆฌ์กํธ์์ ์ด๋ฒคํธ๋ ์ผ๋ฐ์ ์ธ HTML DOM ์ด๋ฒคํธ์ ์ ์ฌํ์ง๋ง ์ฝ๊ฐ์ ์ฐจ์ด์ ์ด ์์ต๋๋ค.
๋ฆฌ์กํธ ์ด๋ฒคํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก synthetic event(ํฉ์ฑ ์ด๋ฒคํธ) ์์คํ ์ ์ฌ์ฉํฉ๋๋ค.
์บก์ณ๋ง & ๋ฒ๋ธ๋ง
์กฐ๊ฑด๋ถ ๋ ๋๋ง
ํน์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ปดํฌ๋ํธ๋ ์๋ฆฌ๋จผํธ๋ฅผ ํ๋ฉด์ ๋ ๋๋งํ๋ ๊ธฐ๋ฒ์ ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ์กฐ๊ฑด๋ฌธ(์: if-else, ์ผํญ ์ฐ์ฐ์, ๋ ผ๋ฆฌ ์ฐ์ฐ์(AND) ๋ฑ)์ ํ์ฉํ์ฌ ๋์ ์ผ๋ก UI๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
์กฐ๊ฑด๋ถ ๋ ๋๋ง ๋ฐฉ๋ฒ
- if๋ฌธ ์ฌ์ฉ
- ์ผํญ ์ฐ์ฐ์ (? :) ์ฌ์ฉ
- ๋ ผ๋ฆฌ ์ฐ์ฐ์ (&&) ์ฌ์ฉ