์ํ๋ ์/์ด๋ป๊ฒ ๋๋๊น
- ํด๋ผ์ด์ธํธ(UI) ์ํ: ์
๋ ฅ๊ฐ, ๋ชจ๋ฌ ํ ๊ธ, ํญ ์ ํ ๋ฑ ์ฑ ๋ด๋ถ์์๋ง ์๋ฏธ๊ฐ ์๋ ๊ฐ
- ์๋ฒ ์ํ: API์์ ๊ฐ์ ธ์จ ์๊ฒฉ ๋ฐ์ดํฐ(๊ณต์ ยท์บ์ยท๋๊ธฐํ ํ์)
- ๊ถ์ฅ: UI๋ React ํ
๊ณผ(ํ์ ์ ๊ฒฝ๋ ์ ์ญ ์ํ), ์๋ฒ ๋ฐ์ดํฐ๋ React Query/SWR ๊ฐ์ ๋๊ตฌ ์ฌ์ฉ
useState: ๊ฐ์ฅ ๋จ์ํ๊ณ ๋น ๋ฅธ ๋ก์ปฌ ์ํ
- ๋๊ธฐ ๋ ๋์ฒ๋ผ ๋ณด์ฌ๋ ์
๋ฐ์ดํธ๋ ๋ฐฐ์นญ๋จ. ๋์ผ ์ด๋ฒคํธ ๋ฃจํ ๋ด ๋ค์ค
setState๋ ํ ๋ฒ์ ๋ ๋๋ก ํฉ์ณ์ง
- ์ด์ ๊ฐ ์์กด ์ ํจ์ํ ์
๋ฐ์ดํธ ๊ถ์ฅ:
setCount(c => c + 1)
import { useState } from "react";
export default function Counter() {
const [count, setCount] = useState(0);
const inc = () => setCount((c) => c + 1);
return <button onClick={inc}>count: {count}</button>;
}
useReducer: ์ ์ด(transition)๊ฐ ๋ง์ ์ํ์ ์ ํฉ
- ์ก์
๊ธฐ๋ฐ์ผ๋ก ์ํ ์ ์ด๋ฅผ ๋ช
์ํ. ๋ก์ง์ ์ปดํฌ๋ํธ ๋ฐ์ผ๋ก ๋ถ๋ฆฌํด ํ
์คํธ/๊ฐ๋
์ฑ ํฅ์
type Action = { type: "inc" } | { type: "dec" } | { type: "reset" };
function reducer(state: number, action: Action) {
switch (action.type) {
case "inc":
return state + 1;
case "dec":
return state - 1;
case "reset":
return 0;
}
}
Context: ํธ๋ฆฌ ์ ๋ฐ์ผ๋ก ๊ฐ ์ ๋ฌ(๋จ์ฉ ์ฃผ์)
- ํ
๋ง, ์ธ์ฆ ์ฌ์ฉ์ ๊ฐ์ ๋น๋ ๋ฎ์ ๋ณ๊ฒฝ์ ์ ํฉ
- ์์ฃผ ๋ณํ๋ ๊ฐ์ ์ปจํ
์คํธ๋ฅผ ์ชผ๊ฐ๊ฑฐ๋ ์
๋ ํฐ ํจํด, ์ ์ญ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ณ ๋ ค
์ ์ญ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํ ๊ธฐ์ค
- Redux Toolkit: ๋ช
ํํ ํจํด/๋ฏธ๋ค์จ์ดยทํด๋ง ๊ฐํจ, ํ ํ์
์ ์ ๋ฆฌ
- Zustand/Jotai: ๊ฐ๋ณ๊ณ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ ์, ์์/์คํ ์ฑ์ ํจ์จ์
- Recoil: ์์กด ๊ทธ๋ํ/ํ์ ์ํ ๊ด๋ฆฌ ์ฉ์ด
useEffect๋ ์ธ์ ์ฐ๋
- "๋ ๋ ๊ฒฐ๊ณผ๋ฅผ ์ธ๋ถ ์ธ๊ณ์ ๋๊ธฐํ"ํ ๋: ๊ตฌ๋
/ํ์ด๋จธ/DOM API/ํฌ์ปค์ค ๋ฑ
- ๋ฐ์ดํฐ ํจ์นญ์ ์๋ฒ ์ํ ๋๊ตฌ(React Query ๋ฑ)๋ก ๋์ฒด ๊ณ ๋ ค
- ์์กด์ฑ ๋ฐฐ์ด ์ ํํ ๊ด๋ฆฌํ๊ณ ๋ถํ์ํ ์ดํํธ ์ ๊ฑฐ
Ref vs State
useRef๋ ๊ฐ์ด ๋ฐ๋์ด๋ ๋ฆฌ๋ ๋๋ฅผ ์ผ์ผํค์ง ์์(์์ ๊ฐ, DOM ์ฐธ์กฐ)
useState๋ UI์ ๋ฐ์๋์ด์ผ ํ๋ ๊ฐ
์ฑ๋ฅ/๊ฒฝํ ํ
- ๋ถ๋ณ์ฑ ์ ์ง๋ก ์ฐธ์กฐ ๋์ผ์ฑ ๊ด๋ฆฌ โ ๋ถํ์ ๋ฆฌ๋ ๋ ๊ฐ์
memo/useMemo/useCallback์ ์ธก์ ํ ํ์ํ ๊ณณ์๋ง ์ ์ฉ
- ์
๋ ฅ ์ง์ฐ/์ฐ์ ์์ ์กฐ์ :
useDeferredValue, useTransition
- ๋ฆฌ์คํธ ๋ ๋๋ ์์ ์ ์ธ key ์ฌ์ฉ(์ธ๋ฑ์ค ์ง์)
์ฒดํฌ๋ฆฌ์คํธ(์์ฝ)
- ์ด ๊ฐ์ ์๋ฒ์์ ์ค๋? โ ์๋ฒ ์ํ ๋๊ตฌ๋ก ๊ด๋ฆฌ
- ์ ์ด ๋ณต์ก/์ก์
๋ค์? โ
useReducer
- ํธ๋ฆฌ ์ ๋ฐ ๊ณต์ ? โ Context(๋น๋ ๋ฎ์) ๋๋ ์ ์ญ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ๋น๋ฒํ ๋ ๋? โ ํ์ ๊ฐ ๋ฉ๋ชจ, ์ปดํฌ๋ํธ ๋ถ๋ฆฌ, key ์์ ์ฑ ์ ๊ฒ