Hooks API Reference
API๋ฅผ ๋ณด๋ฉฐ ์ ๋ฆฌํ ๋ด์ฉ, API ๊ทธ๋๋ก์ ๋ด์ฉ
Hook์ React 16.8์ ์๋ก ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ด๋ค. class๋ฅผ ์์ฑํ์ง ์๊ณ ๋ state์ ๋ค๋ฅธ react๊ธฐ๋ฅ์ ์ธ ์ ์๋ค.
๊ธฐ๋ณธ Hook
useState
useEffect
useContext
์ถ๊ฐ Hooks
useCallback
useMemo
useRef
useImperativeHandle
useLayoutEffect
useDebugValue
useConetxt
context์ ํ์ฌ ๊ฐ์ ๋ฐํํ๋ค. context์ ํ์ฌ ๊ฐ์ ํธ๋ฆฌ ์์์ Hook์ ํธ์ถํ๋ ์ปดํฌ๋ํธ ๊ฐ์ฅ ๊ฐ๊น์ด์ ์๋
์ value prop์ ์ํด ๊ฒฐ์ ๋๋ค.
์์ ์ปดํฌ๋ํธ์์ React.memo๋ฅผ ์ฌ์ฉํ๋๋ผ๋ useContext๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ์ปดํฌ๋ํธ ์์ฒด์์๋ถํฐ ๋ค์ ๋ ๋๋ง๋๋ค.
useContext ์ ๋ฌ ์ธ์๋ context ๊ฐ์ฒด ๊ทธ ์์ฒด์ฌ์ผ ํ๋ค.
useContext(MyContext) -> ๋ง์
useContext(MyContext.Consumer) -> ํ๋ฆผ
useContext๋ฅผ ํธ์ถํ ์ปดํฌ๋ํธ๋ context ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ํญ์ ๋ฆฌ๋ ๋๋ง ๋ ๊ฒ์ด๋ค. ๋ง์ฝ ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋ ๋๋งํ๋ ๋น์ฉ์ด ๋ง์ด ๋ ๋ค๋ฉด, ๋ฉ๋ชจ์ ์ด์ ์ ์ฌ์ฉํ์ฌ ์ต์ ํํ ์ ์๋ค.
ํด๋์ค์์ ์ธ ๋๋ static contextType = context
๋๋ <MyContext.Consumer>
์ ์ ์ฌํ๋ค.
useReducer
useState์ ๋์ฒด ํจ์์ด๋ค. (state, action) => newState์ ํํ๋ก reducer๋ฅผ ๋ฐ๊ณ , dispatch ๋ฉ์๋์ ์ง์ ํํ๋ก ํ์ฌ state๋ฅผ ๋ฐํ
๋ค์ state๊ฐ ์ด์ state์ ์์กด์ ์ธ ๊ฒฝ์ฐ useState๋ณด๋ค useReducer๊ฐ ๋ซ๋ค. useReducer๋ ์์ธํ ์ ๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐ ํ๋ ์ปดํฌ๋ํธ์ ์ฑ๋ฅ์ ์ต์ ํ ์ ์๋๋ฐ ์ฝ๋ฐฑ ๋์ dispatch๋ฅผ ์ ๋ฌ ํ ์ ์๋ค.
useState๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ
setState์ ์ฒซ๋ฒ์งธ์ธ์๊ฐ prevState ์๋ค.. ๐
useReducer๋ก ๋ฐ๊ฟจ์ ๋
dispatch๋ ๋ฆฌ๋ ๋๋ง ์์๋ ๋ณ๊ฒฝ๋์ง ์์์ ๋ณด์ฅํ๋ค.
reducer๊ฐ ์์ํจ์์ธ๊ฑฐ์ ๊ด๋ จ์ด ์์ง ์์๊น? ๊ทธ๋์ useEffect๋ useCallback ์์กด์ฑ ๋ชฉ๋ก์ ์ด ํจ์๋ฅผ ํฌํจํ์ง ์์๋ ๊ด์ฐฎ๋ค.
์ด๊ธฐํํ๋๋ฒ useReducer(reducer, initial);
๋๋ฒ์งธ ์ธ์๋ก ์ค์ ํ๋ค.
์ด๊ธฐํ๋ฅผ ์ง์ฐํ ์ ์๋ค.
useReducer์ 3๋ฒ์งธ ์ธ์๋ฅผ ์ด์ฉํ์ฌ ์ง์ฐ์ํฌ ์ ์๋ค.
state๋ฅผ ์ด๊ธฐํํ ๋๋ ์ ์ฉํ๋ค.
useCallback
๋ถํ์ํ ๋ ๋๋ง์ ๋ฐฉ์งํด์ค๋ค. ์ฝ๋ฐฑ์์์ ์ฐธ์กฐ๋๋ ๋ชจ๋ ๊ฐ์ ์์กด์ฑ ๊ฐ์ ๋ฐฐ์ด์ ๋ํ๋์ผ ํ๋ค.
์์กด์ฑ ๊ฐ์ ๋ฐฐ์ด์ด ์ฝ๋ฐฑ์ ์ธ์๋ก ์ ๋ฌ๋์ง ์๋๋ค.
useMemo
"์์ฑ(create)" ํจ์์ ์์กด์ฑ ๊ฐ์ ๋ฐฐ์ด์ ์ ๋ฌ useMemo๋ก ์ ๋ฌํ ํจ์๋ ๋ ๋๋ง ์ค์ ์คํ๋๋ค.
์ฌ์ด๋ ์ดํํธ(side effects)๋ useEffect์์ ํ๋ ์ผ์ด์ง useMemo์์ ํ๋ ์ผ์ด ์๋๋ค. ๋ํ useMemo๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ๋์ํ ์ ์๋๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๊ทธ๊ฒ์ ์ถ๊ฐํ์ฌ ์ฑ๋ฅ์ ์ต์ ํ ํ์ธ์.
Last updated
Was this helpful?