Hooks ๋ฑ์ฅํ๊ธฐ ์
์ปดํฌ๋ํธ์ ์ํ ๊ด๋ฆฌ๋ฅผ ํ๋ ค๋ฉด ํด๋์ค ๊ธฐ๋ฐ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํด์ผ ํ๋ค.
this.state ํ๋์ ์ด๋ฆ์ ์ ์ฅํ๋ค๋ฉด, ์ฌ์ฉ์๊ฐ ์ด ๊ฐ์ ๋ณ๊ฒฝํ ๋๋ง๋ค ์ด ๊ฐ์ด ๊ฐฑ์ ๋๊ณ ๋ค์ ํ๋ฉด์ ๋ฐ์ํ๋ Class ๊ธฐ๋ฐ ์ปดํฌ๋ํธ ๋ฐฉ์์ด์๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํจ์ ๊ธฐ๋ฐ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ์ฌ ์ ์ง ๋ณด์๋ฅผ ์ฝ๊ฒ ํ๋๋ก Hooks๋ฅผ ๋ง๋ค์๋ค.
Hooks๋ ?
๋ฆฌ์กํธ v16.8 ์ ์๋ก ๋์ ๋ ๊ธฐ๋ฅ์ผ๋ก, ํจ์ํ ์ปดํฌ๋ํธ์์ state์ ์๋ช ์ฃผ๊ธฐ ๊ธฐ๋ฅ์ ์ฐ๋ํ ์ ์๊ฒ ํด์ฃผ๋ ํจ์
์ฝ๊ฒ ๋งํด, ํจ์ํ ์ปดํฌ๋ํธ์์ ์ํ ๊ฐ ๋ฐ ๋ค๋ฅธ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํ๊ฒ ํด์ฃผ๋ ๋ฉ์๋์ด๋ค.
๊ธฐ์กด ๋ผ์ดํ ์ฌ์ดํด ๋ฉ์๋ ๊ธฐ๋ฐ์ด ์๋ ๋ก์ง ๊ธฐ๋ฐ์ผ๋ก ๋๋ ์ ์๊ธฐ ๋๋ฌธ์, ์ปดํฌ๋ํธ๋ฅผ ํจ์ ๋จ์๋ก ์๊ฒ ๋๋ ์ ์๋ค.
ํจ์ ์ปดํฌ๋ํธ์์ state์ ๊ฐ์ง ์ ์๊ฒ ๋์๋ค.
๋ง์ผ ์ฑ์ react hook์ ์ฌ์ฉํ์ฌ ๋ง๋ ๋ค๋ฉด class component, render ๋ฑ์ ์ํด๋ ๋๋ค๋ ๋ป์ด๋ค.
- class ์์์ ๋์ํ์ง ์์ผ๋ฏ๋ก class ์์ด ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค.
→ ๋ชจ๋ ๊ฒ์ ํ๋์ function์ด ๋๋ ๊ฒ, ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํด์ง๋ ๊ฒ
๊ธฐ๋ฅ
- ํจ์ํ ์ปดํฌ๋ํธ์์๋ ์ํ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ useState
- ๋ ๋๋ง ์งํ ์์ ์ ์ค์ ํ๋ useEffect ๋ฑ
→ ๊ธฐ์กด์ ํจ์ํ ์ปดํฌ๋ํธ์์ ํ ์ ์์๋ ๋ค์ํ ์์ ์ ํ ์ ์๊ฒ ํด์ค๋ค.
์ฃผ์์ฌํญ
- Hook ์ฌ์ฉ ์์ ์ต์์(๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ, ์ค์ฒฉ๋ ํจ์ x)์์ ๊ทธ๋ฆฌ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ํจ์๊ฐ ์๋ ๋ฆฌ์กํธ ํจ์ ์ปดํฌ๋ํธ์์๋ง Hook์ ํธ์ถํด์ผ ํ๋ค. ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋ ๋๋ง๋ค ํญ์ ๋์ผํ ์์๋ก Hook์ด ํธ์ถ๋๊ฒ ๋๋ค.
useState
ํจ์ํ ์ปดํฌ๋ํธ์์๋ ๊ฐ๋ณ์ ์ธ ์ํ๋ฅผ ์ง๋๊ณ ์์ ์ ์๊ฒ ํด์ฃผ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ Hook
- state๋ฅผ ํจ์ ์ปดํฌ๋ํธ ์์์ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค.
- ํจ์ํ ์ปดํฌ๋ํธ์์ ์ํ๋ฅผ ๊ด๋ฆฌํด์ผ ๋๋ ์ผ์ด ๋ฐ์ํ ๋ ์ฌ์ฉ
- ์ฌ๋ฌ๋ฒ ์ฌ์ฉํ๊ธฐ
- ํ๋์ useState ํจ์๋ ํ๋์ ์ํ๊ฐ๋ง ๊ด๋ฆฌํ ์ ์์ผ๋ฏ๋ก ์ปดํฌ๋ํธ์์ ๊ด๋ฆฌํด์ผ ํ ์ํ๊ฐ ์ฌ๋ฌ๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ฌ๋ฌ๋ฒ ์ฌ์ฉํ๋ฉด ๋๋ค.
useEffect
๋ฆฌ์กํธ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋ ๋๋ง๋ค ํน์ ์์ ์ ์ํํ๋๋ก ์ค์ ํ ์ ์๋ Hook
ํด๋์คํ ์ปดํฌ๋ํธ์ componentDidMount ์ componentDidUpdate ๋ฅผ ํฉ์น ํํ๋ก ๋ณด์๋ ๋ฌด๋ฐฉํ๋ค.
- ๋ง์ดํธ ๋ ๋๋ง ์คํํ๊ณ ์ถ์ ๋
- ํน์ ๊ฐ์ด ์ ๋ฐ์ดํธ ๋ ๋๋ง ์คํํ๊ณ ์ถ์ ๋
- ์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ๋๊ธฐ ์ ์ด๋, ์ ๋ฐ์ดํธ ๋๊ธฐ ์ง์ ์ ์ด๋ ํ ์์ ์ ์ํํ๊ณ ์ถ๋ค๋ฉด useEffect ์์ ๋ท์ ๋ฆฌ(cleanup) ํจ์๋ฅผ ๋ฐํํด์ฃผ์ด์ผ ํฉ๋๋ค
useReducer
useState ๋ณด๋ค ์ปดํฌ๋ํธ์์ ๋ ๋ค์ํ ์ํฉ์ ๋ฐ๋ผ ๋ค์ํ ์ํ๋ฅผ ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธํด์ฃผ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ Hook
Reducer
- ํ์ฌ ์ํ์, ์ ๋ฐ์ดํธ๋ฅผ ์ํด ํ์ํ ์ ๋ณด๋ฅผ ๋ด์ ์ก์ (action) ๊ฐ์ ์ ๋ฌ ๋ฐ์ ์๋ก์ด ์ํ๋ฅผ ๋ฐํํ๋ ํจ์
- ๋ฆฌ๋์ ํจ์์์ ์๋ก์ด ์ํ๋ฅผ ๋ง๋ค ๋๋ ๊ผญ ๋ถ๋ณ์ฑ์ ์ง์ผ์ฃผ์ด์ผ ํฉ๋๋ค.
useMemo
ํน์ ๊ฐ ์ฌ์ฌ์ฉํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ Hook (= ๋ฆฌํด๊ฐ ์ฌ์ฌ์ฉ)
- ํจ์ํ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๋ฐ์ํ๋ ์ฐ์ฐ์ ์ต์ ํ ํ ์ ์๊ฒ ํ๋ค.
- ํจ์ํ ์ปดํฌ๋ํธ: ๋ ๋๋ง ๋ ๋๋ง๋ค ํจ์ ์ปดํฌ๋ํธ๊ฐ ํธ์ถ๋๋ค๋ ๋ป
- ์ฆ, ํจ์๊ฐ ํธ์ถ๋๋ฉด ๋ชจ๋ ๋ด๋ถ ๋ณ์๊ฐ ์ด๊ธฐํ๋๋ค
- ์ปดํฌ๋ํธ ๋ด๋ถ์ ์ฌ๋ฌ ๊ฐ์ ํจ์๊ฐ ์์ ๊ฒฝ์ฐ, ํ๋์ ๊ฐ๋ง ๋ฐ๋์ด๋ ๋ชจ๋ ํจ์๊ฐ ํธ์ถ๋์ด ๋ถํ์ํ ์ฐ์ฐ์ด ๋ค์ ์ด๋ฃจ์ด์ง
- ๋ณต์กํ ์ฐ์ฐ์ ์ค๋ณต์ ํผํ๊ณ React์ฑ์ ์ฑ๋ฅ์ ์ต์ ํํ๋ค.
useCallback
ํน์ ํจ์๋ฅผ ์๋ก ๋ง๋ค์ง ์๊ณ ์ฌ์ฌ์ฉํ๊ณ ์ถ์๋ ์ฌ์ฉํ๋ Hook (= ํจ์ ์ฌ์ฌ์ฉ)
- ์ฃผ๋ก ๋ ๋๋ง ์ฑ๋ฅ์ ์ต์ ํํด์ผ ํ๋ ์ํฉ์์ ์ฌ์ฉํ๋ค.
- ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์๋ฅผ ํ์ํ ๋๋ง ์์ฑ ํ ์ ์๋ค.
useContext
ํจ์ํ ์ปดํฌ๋ํธ์์ Context ๋ฅผ ๋ณด๋ค ๋ ์ฝ๊ฒ ์ฌ์ฉํ๊ฒ ํด์ค๋ค.
useRef
ํจ์ํ ์ปดํฌ๋ํธ์์ ref ๋ฅผ ์ฝ๊ฒ ์ฌ์ฉ ํ ์ ์๊ฒ ํด์ค๋ค.
์ฐธ๊ณ ๋ฌธํ
'TIL > ๐งบ React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฐ์๋(Virtual DOM) ์ดํดํ๊ธฐ (0) | 2023.01.04 |
---|