๐ Hook์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
๋ฆฌ์กํธ ์ปดํฌ๋ํธ ์ข ๋ฅ : Class Component / Functional Component
Hook์ด ๋ฑ์ฅํ๊ธฐ ์ ๋ฆฌ์กํธ์๋ ์ฌ๋ฌ ๋ฌธ์ ๋ค์ด ์์์ต๋๋ค. Class Component๋ Functional Component์ ๋นํด ๋ฌธ๋ฒ์ด ์ด๋ ต๊ณ ๋ก์ง์ ์ฌ์ฌ์ฉ์ด ํ๋ ๋จ์ ์ด ์์ผ๋ Functional Component๋ก๋ ํ ์ ์์๋ state๊ด๋ฆฌ๋ Life Cycle Method๊ฐ ๊ฐ๋ฅํ๋ค๋ ์ด์ ๋ก ์ด์ฉ ์ ์์ด Class Component๋ฅผ ์ฌ์ฉํด์์ต๋๋ค.
Hook์ด ๋ฑ์ฅํ๊ธฐ ์ ์ ๋ฆฌ์กํธ๋
-
์ปดํฌ๋ํธ ์ฌ์ด์์ ์ํ์ ๊ด๋ จ๋ ๋ก์ง์ ์ฌ์ฌ์ฉํ๊ธฐ ์ด๋ ค์ ์ต๋๋ค.
-
์๋ช ์ฃผ๊ธฐ ์ปดํฌ๋ํธ๋ก ์ธํ ๋ณต์กํ ์ปดํฌ๋ํธ๋ ์ดํดํ๊ธฐ ์ด๋ ค์ ์ต๋๋ค. ์ํ๊ด๋ จ ๋ก์ง์ด ๋ชจ๋ ๊ฐ์ ๊ณต๊ฐ์ ์์นํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๐ง Hook ์ด๋?
Hook์ ๋ฆฌ์กํธ 16.8 ๋ฒ์ ์ดํ ํจ์ํ ์ปดํฌ๋ํธ์ ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ฆ, React Hook์ ํจ์ํ ์ปดํฌ๋ํธ๊ฐ ํด๋์คํ ์ปดํฌ๋ํธ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ํด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ฉฐ Hook์ด ๋ฑ์ฅํ๋ฉด์ ๋ ์ด์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด Class Component๋ฅผ ์ธ ํ์๊ฐ ์์ด์ก์ต๋๋ค.
๊ธฐ์กด์๋ Class Component ์์๋ง ์ํ๋ฅผ ๊ด๋ฆฌ ํ ์ ์์๊ณ , ํจ์ํ ์ปดํฌ๋ํธ์์๋ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์์์ต๋๋ค. ํ์ง๋ง Hook์ด ๋ฑ์ฅํ๋ฉด์ ํจ์ํ ์ปดํฌ๋ํธ ์์๋ ์ํ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ๋์๊ณ , ์ํ ๊ด๋ฆฌ ๋ฟ๋ง ์๋๋ผ ๊ธฐ์กด ํด๋์คํ ์ปดํฌ๋ํธ์์๋ง ๊ฐ๋ฅํ๋ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ต๋๋ค.
๐ React Hook ๊ณต์๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ
๐งพ Hook์ ์ข ๋ฅ
useState
๊ฐ์ฅ ๋ํ์ ์ธ Hook์ผ๋ก ์ํ๊ฐ์ ์์ฑ ๋ฐ ์ ๋ฐ์ดํธ์์ผ์ฃผ๋ Hook์ ๋๋ค.
๐ useState ๋ ์์๋ณด๊ธฐ
useEffect
์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋ ๋๋ง๋ค ํน์ ์์ ์ ์ํํ๋๋ก ์ค์ ํ๋ Hook์ ๋๋ค.
๐ useEffect ๋ ์์๋ณด๊ธฐ
useReducer
useState์ฒ๋ผ ์ํ๊ด๋ฆฌ์ ์ฐ์ด๋ฉฐ ๊ตฌ์กฐ๊ฐ ๋ณต์กํ ์ํ๊ด๋ฆฌ์ ์ ํฉํ Hook์ ๋๋ค.
๐ useReducer ๋ ์์๋ณด๊ธฐ
useRef
๋ ๋๋ง๊ณผ ๊ด๋ จ์๋ ๊ฐ์ ๊ด๋ฆฌํ๊ฑฐ๋ DOM์ ์ ๊ทผ์ด ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ Hook์ ๋๋ค.
useMemo
๋ ๋๋ง ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ ์ฅํด๋๊ณ ํ์ํ ๋ ๋ถ๋ฌ์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ Hook์ ๋๋ค.
useCallback
useMemo์ ๋น์ทํ๋ ๊ฐ์ด ์๋ ํจ์๋ฅผ ์ฌ์ฌ์ฉํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ Hook์ ๋๋ค.
๐ useCallback ๋ ์์๋ณด๊ธฐ
useContext
์ ์ญ์ ์ผ๋ก ์ฌ์ฉ๋๋ state๋ ๋ฐ์ดํฐ๋ฅผ ํ์ํ ์ปดํฌ๋ํธ์ ์ ๋ฌํ๋ Hook์ ๋๋ค.
๐ useContext ๋ ์์๋ณด๊ธฐ
REFERENCE
React(23) ๋ฆฌ์กํธ ํ ์ด๋? https://devbirdfeet.tistory.com/52
๋ฆฌ์กํธ ๊ณต์ ๋ฌธ์ https://reactjs.org/docs/hooks-intro.html
[React] Hooks์ ์ข ๋ฅ https://lelana.tistory.com/146