Custom Hook
Last updated
Last updated
Custom Hook
Hook์ ๊ท์น
usehooks-ts
useBoolean
useCounter
useEffectOnce
useFetch
SWR
React-Query
useInterval
useEventListener
useLocalStorage
useDarkMode
์ปดํฌ๋ํธ ๋ก์ง์ ํจ์๋ก ๋ฝ์๋ด์ด ์ฌ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ
React์ State์ Lifecycle ๊ด๋ฆฌ ๋ก์ง์ ๊ณตํตํ ํ ์ ์๋๋ก ๋์์ฃผ๋ ์ญํ (์ปดํฌ๋ํธ๊ฐ์ ๋ก์ง ๊ณต์ )
use
๋ก ์์ํด์ผ ํ๊ณ PascalCase๋ก ์ด๋ฆ์ ์์ฑํ๋ค.
๐ hooks
ํด๋๋ฅผ ์์ฑํ๊ณ ํ๋์ ํ์ผ๋ก ๋ถ๋ฆฌ ํ ์ฌ์ฉ
๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ ํน์ ์ค์ฒฉ๋ ํจ์ ๋ด์์ Hook์ ํธ์ถํ์ง ์๋๋ค.
React ํจ์ ์ปดํฌ๋ํธ์์ Hook์ ํธ์ถ
Custom Hook์์ Hook์ ํธ์ถ
Hook ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Hook์ ์ด๋ป๊ฒ ๋ง๋ค์๋์ง ์ฝ๋๋ฅผ ๋ณผ ์ ์๊ณ Custom Hook์ ๋ง๋๋๋ฐ ์๊ฐ์ ์ป์ ์ ์๋ค.
์ฐธ/๊ฑฐ์ง์ ๋ค๋ฃฐ ๋ toggle ๊ฐ์ด ์๋๊ฐ ๋ช ํํ ํจ์๋ฅผ ์ฐ๋ ๊ฒ ์ข๋ค.
์์กด์ฑ ๋ฐฐ์ด์ ๋น ๋ฐฐ์ด๋ก ๋ฃ์ด์ ํ ๋ฒ๋ง ์คํํ๋ Effect๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ useEffectOnce hook ์ด๋ฆ์์๋ถํฐ ์๋๊ฐ ๋ช ํํ ๋๋ฌ๋๋ค.
์ ๋ง ๊ฐ๋จํ ์ธ ๋ ์ข์, ๊ทธ๋ฌ๋ ๊ธฐ๋ฅ์ด ๋ง์ง ์๋ค.
์ฌ์ฉ๋ฒ์ด ๋ ๋ณต์กํค๋ ๊ด์ฐฎ๋ค๋ฉด, ์บ์ ์ด์๋ฅผ ๊ณ ๋ คํ๋ ๋ค๋ฅธ ๋์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค.
SWR์ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๋ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋ฐ๋์๋์ง ํ์ธํ๋ค. ์๋ฅผ ๋ค์ด, ๊ฒ์ํ์ด๋ฉด ๊ฒ์๋ฌผ์ด ์ฌ๋ผ์๋์ง ํ์ธํ๋ค. React Query๋ ์ด๋ณด๋ค ๋ ๋ณต์กํ ๊ฒ์ ๋ค๋ฃฐ ๋ ์ฌ์ฉํ๋ค.
React์์ setInterval ๋ฑ์ ์ธ ๋๋ ์ฃผ์ํด์ผ ํ ๋ถ๋ถ์ด ์์ด์ Custom Hook์ ๋ง๋ค์ด์ ํด๊ฒฐํด์ผ ํ๋ค.
ํด๋น Hook ์ฐ๊ธธ ์ถ์ฒํ๋ค! setInterval ์ด์๊ฐ ๋ถ๋ช ์ด ์๋ค.
โญ๏ธ ๊ฐ๋ ฅ ์ถ์ฒ โญ๏ธ
๋ชจ๋ ์ข ๋ฅ์ ์ด๋ฒคํธ๋ฅผ ํ์ธํ ์ ์๋ค.
ํนํ dispatchEvent๋ก ์ ๋ฌ๋๋ ์ปค์คํ ์ด๋ฒคํธ์ ๋ฐ์ํ๊ธฐ ์ข๋ค.
LocalStorage์ ๊ฐ์ฒด๋ฅผ ๋ฃ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด์ ๊ฐ์ ๊ฒฝ์ฐ stringfy ์ parse๋ฅผ ์๋์ผ๋ก ํด์ค๋ค.
์ด๋ฒคํธ๋ฅผ ํตํด(dispatchEvent + useEventListener) ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ๋๊ธฐํํ๋ ๊ฒ ๋งค์ฐ ์ค์ํ ํน์ง
os ์ด์์ฒด์ ์ ๋คํฌํ ๋ง๋ฅผ ํ์ฉํ๊ณ ์ถ์ ๋
Custom Hook
์ ํ์ฉํ๋ค๋ฉด ์ฌ์ฌ์ฉ ์ธก๋ฉด์์ ๋ฆฌ์กํธ์ ๊ฐ์ ์ ์ ๋๋ก ์ฌ์ฉ ํ ์ ์๋ค. ์ฌ์ฌ์ฉ ํ ์ ์๋๋ก ๋ก์ง์ ์ ์๊ฐํด์ผ ํ ๊ฒ ๊ฐ๋ค.
usehooks-ts
์ฐธ๊ณ ํ ๋ง ํ ๋ด์ฉ์ด ๋ง๊ณ , ํ์ฉ์ฑ ์ธก๋ฉด ์ผ์ด๋์ ์ถ์ฒํ๋ค.
๋ณ๋ ์ค์น ์์ด ์ฝ๋๋ฅผ ๋ณต์ฌํด์ ์ฌ์ฉํด๋ ์ข๊ณ , Custom Hook์ ํ์ฉ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ๋ง๊ธฐ ๋๋ฌธ์ ์์ฃผ ๋ณด๋ฉด์ ์๊ฐ์ ์ป์ ์ ์๋ค.
๋ช ๊ฐ์ง ๊ธฐ๋ฅ์ด ์ด์ง ๋ ์๋ useFetch ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฐ๋ก ์๋ค. โ (๋ง์ด ์ฌ์ฉํ์ง ์๋๋ค.)
: ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ํ React Hooks
โ Not Found(?)