useState
: React์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ Hook์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋ ๋(re-render) ์ํฌ ์ ์๋ค.
setState๋ฅผ ํธ์ถํ์ฌ state์ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด, ๋ณ๊ฒฝ๋ ๊ฐ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋๋ค.
- setState๋ ๋๊ธฐ์ ์ผ๋ก ๋์ํ๋ค. -> ์ฐ์์ผ๋ก ์ฌ๋ฌ๋ฒ ์คํํ ๊ฒฝ์ฐ, ์ ๋ฐ์ดํธ๋ state๋ฅผ ๋ณด์ฅ๋ฐ์ง ๋ชปํ๋ค.
- state๊ฐ ๋ณํ ๊ฒฝ์ฐ, ์ปดํฌ๋ํธ ์ ์ฒด๊ฐ ๋ฆฌ๋ ๋๋๋ค. -> ์ปดํฌ๋ํธ ๋ด๋ถ์ ์ ์๋ ๋ชจ๋ ๋ณ์์ ํจ์๊ฐ ์ฌ์ ์ธ, ์ฌ์คํ๋๋ค. -> ์ฑ๋ฅ์ ํ ์ด์
useEffect
: ํจ์์ ๋ณ์๋ฅผ ๋ฐ์, ๋ณ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ์ ํจ์๋ฅผ ์คํ์ํจ๋ค.
๋ณ์๋ ์์กด์ฑ ๋ฐฐ์ด(dependency array)๋ก ์ฌ๋ฌ ๊ฐ์ ํฌํจ์ํฌ ์ ์๋ค.
์์กด์ฑ ๋ฐฐ์ด์ด ๋น์ด์์ ๊ฒฝ์ฐ, ์ต์ด ๋ ๋๋ง ์ ํ๋ฒ๋ง ์คํ๋๋ค.
- useEffect์์ setInterval ์ฌ์ฉ ์, ๋ด๋ถ ํจ์๊ฐ clearInterval๋ฅผ ๋ฆฌํดํ๋๋ก ํด์ผํ๋ค.
- ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง์ ์ํด ๊ธฐ์กด ์ปดํฌ๋ํธ๋ฅผ ์ธ๋ง์ดํธํ๋ ์์ ์ return ๋๋ค.
useLayoutEffect
: useEffect์ ๊ฑฐ์ ๋น์ทํ๋, ์์กด์ฑ ๋ฐฐ์ด ์์ state๊ฐ ๋ ๋๋ง ๋๊ธฐ ์ ํจ์๊ฐ ์คํ๋๋ค.
DOM ์์์ ๋ ์ด์์(์์น, ๋๋น ๋ฑ)์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋กํ๋ ์์ ์ ํ ๋ ์ ์ฉํ๋ค.
useContext
: ๋ชจ๋ ์ปดํฌ๋ํธ์์ ์ ๊ทผ ๊ฐ๋ฅํ ์ ์ญ state๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
์ปดํฌ๋ํธ ํธ๋ฆฌ์์ props๋ฅผ ํตํด ์ ๋ฌํ์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์, props drilling์ ํด๊ฒฐํ์ฌ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์๋ค.
useReducer
: useState๋ณด๋ค ๋ณต์กํ state๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
state ์ ๋ฐ์ดํธ ๋ก์ง์ ํจ๊ณผ์ ์ผ๋ก ๋ถ๋ฆฌํ๊ณ ์ฌ๋ฌ ์ก์ ์ ์ฒ๋ฆฌํ๋ค.
๋ค์ํ ํ์ ์ปดํฌ๋ํธ๋ค์ด ๋์ผํ state์ ์ ๊ทผํ์ฌ ์ ๋ฐ์ดํธ๋ฅผ ์ํํ ๋ ์ ์ฉํ๋ค.
const [state, dispatch] = useReducer(reducer, initialState);
- reducer์ initialState๋ฅผ ์ธ์๋ก ๋ฐ์, state์ ํจ๊ป dispatch๋ ์ก์ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ ํจ์๋ฅผ ๋ฆฌํดํ๋ค.
- reducer : ํธ์ถ๋ ๋, ํ์ฌ ์ํ์ ์ก์ ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ๋ฐ์ ์๋ก์ด ์ํ๋ฅผ ๋ฐํํ๋ ํจ์
- initialState : ์ด๊ธฐ ์ํ ๊ฐ
useRef
: ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๊ฐ์ ์ ์ฅํ๊ณ ์ ์งํ๋ ๊ฒฝ์ ์ ์ฌ์ฉํ๋ค.
์ปดํฌ๋ํธ ๋ ๋๋ง ์ฌ์ด์์๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ, ๊ฐ์ ๋ณ๊ฒฝ์ด ๋ฆฌ๋ ๋๋ง์ ์ผ์ผํค์ง ์๋๋ค.
- ref์ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๊ฐ์ฒด๋ก, .current ์์ฑ์ ํตํด ์ฐธ์กฐ๊ฐ์ ์ ๊ทผํ๋ฉฐ ์ด๊ธฐ๊ฐ์ ์ค์ ํ ์ ์๋ค.- testRef.current.focus(); <- DOM ์์์ ์ง์ ์ ๊ทผ
useMemo
: ํจ์์ ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅ(๋ฉ๋ชจ์ด์ ์ด์ / ์บ์ฑ)ํ๊ณ , ์์กด์ฑ ๋ฐฐ์ด์ ๋ณ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ์ ๊ณ์ฐ์ ๋ค์ ์์ ํ๋ค.
์ปดํฌ๋ํธ ๋ฆฌ๋ ๋๋ง ์, ์์กด์ฑ ๋ฐฐ์ด ์์ ๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ, ์ ์ฅ๋ ๊ฐ์ ๋ถ๋ฌ์ด -> ๋ถํ์ํ ๊ณ์ฐ X / ๋ ๋๋ง ์ฑ๋ฅ ํฅ์
useCallback
: ํจ์ ์์ฒด๋ฅผ ๋ฉ๋ชจ์ด์ ์ด์ ํ์ฌ, ์์กด์ฑ ๋ฐฐ์ด์ ๋ช ์๋ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋๋ง ์๋ก์ด ํจ์ ์์ฑํ๋ค. -> ์ฑ๋ฅ ์ต์ ํ
useTransition
: ๋น๋๊ธฐ ์์ ์ ์ํ๋ฅผ ํ์ํด์ฃผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
state์ ์ ๋ฐ์ดํธ๋ฅผ ํน์ ๋จ์๋ก ๋๋์ด ํ๋ฉด์ ๋ ๋๋ง ->๋ธ๋ผ์ฐ์ ์ ํ๋ฉด ์ ๋ฐ์ดํธ ์๋ ํฅ์
- ๋ ๊ฐ์ ์ธ์๋ฅผ ๋ฐ์ ์ฌ์ฉ
- ๋น๋๊ธฐ ์์ ์ ์คํ์ํ(๋ก๋ฉ)๋ฅผ ํ์ํ ๋, ํ๋ฉด์ ๋ณด์ฌ์ค ์๊ฐ ๊ฐ๊ฒฉ
- ํด๋น ์ํ๋ฅผ ํ์ํ ๋์ ๋ ๋๋ง ์ฐ์ ์์
- setState๋ก state๋ฅผ ์ ์ฒด์ ์ผ๋ก ์ ๋ฐ์ดํธํ ๋, useTransition์ timeoutMs ์ต์ ๊ฐ์ ์ ์ฉํจ์๋ฐ๋ผ ๋ถ๋ถ์ ์ธ ์ ๋ฐ์ดํธ๋ฅผ ๋จผ์ ์ํํ๊ณ ,
ํด๋น ๋ฐ๋ฆฌ์ด๊ฐ ์ง๋ ํ ๋๋จธ์ง ์ ๋ฐ์ดํธ๋ฅผ ์คํํ ์ ์๋ค. -> ๋ณต์กํ ๊ณ์ฐ ํฌํจ๋ ์ปดํฌ๋ํธ์ ๋ ๋๋ง ์๋ ํฅ์
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] Promise.all() , Suspense | ์ฌ๋ฌ ๋น๋๊ธฐ ํจ์ ์ต์ ํ (0) | 2024.03.20 |
---|---|
[React] Vite + React + TS ๊ฐ๋ฐ ์๋ฒ ๊ตฌ์ถ (1) | 2024.02.26 |