custom hook์ ์ฌ์ฉํด๋ณด๊ณ ์ถ์๋ฐ, ์ ํํ ์ด๋ค ๊ฐ๋ ์ธ์ง ์๋ฟ์ง ์์์ ๊ฐ๋จํ๊ฒ ๊ณต์ ๋ฌธ์๋ฅผ ์ฝ์ด๋ดค๋ค.
์ปค์คํ ํ ์ด๋?
์ ๋ชฉ์ ๋จผ์ ๋ต์ ํ์๋ฉด ์ปค์คํ ํ ์ ํจ์๋ค. ๋ด๋ถ์์ ๋ค๋ฅธ hook์ ํธ์ถํ๋ ํจ์๋ฅผ, ์ฐ๋ฆฌ๋ ์ปค์คํ ํ ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ฌ๊ธฐ์ ๋ค๋ฅธ hook์ด๋ผ ํจ์ ์ฐ๋ฆฌ๊ฐ ์์ฃผ ์ฌ์ฉํ๋ useState, useEffect ๋ฑ์ ์ผ์ปซ๋๋ค.
์ฆ Custom hook์ ํจ์์ด๋ฉฐ, ์ผ๋ฐ ํจ์์์ ์ฐจ์ด์ ์ ๋ด๋ถ์์ ๋ค๋ฅธ hook์ ํธ์ถํ ์ ์๋ค๋ ์ ์ด๋ค.
๐๐ปโ๏ธ : ์ ๊ทธ๋ ๋ค๋ฉด ์ผ๋ฐํจ์์์๋ hook์ ํธ์ถ ํ ์ ์๋ ๊ฒ์ธ๊ฐ์?
โก๏ธ ๊ทธ๋ ๋ค. ์ผ๋ฐ ํจ์์์๋ hook์ ํธ์ถํ ์ ์๋ค.
๋ฆฌ์กํธ ๊ณต์๋ฌธ์๋ฅผ ์ดํด๋ณด๋ฉด, hook์ ์ฌ์ฉํ ๋ ๋ ๊ฐ์ง ๊ท์น์ด ์กด์ฌํ๋ค.
1. React ํจ์์ ์ต์์ ๋ ๋ฒจ์์๋ง hook์ ํธ์ถํ ๊ฒ.
2. ์ผ๋ฐ Javascript ํจ์์์ hook์ ํธ์ถํ์ง ๋ง ๊ฒ.
๊ณต์๋ฌธ์์ ๋ฐ๋ฅด๋ฉด hook์ ํธ์ถํ ์ ์๋ ์์น๋ ๋ ๊ฐ์ง ๋ฟ์ด๋ค.
React ํจ์ ์ปดํฌ๋ํธ์ Custom Hook
๊ผญ use[์ด์ฉ๊ตฌ] ๋ผ๊ณ ๋ค์ด๋ฐ ํด์ผ ํ ๊น?
๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด ์ ๋ต์ โญ๏ธ ๋ค. ์ปค์คํ ํ ์ ์ด๋ฆ์ ๋ฐ๋์ use๋ก ์์ํด์ผ ํ๋ค. ๊ทธ ์ด์ ๋ ์์ ๋ด์ฉ์์ ์ฐพ์ ์ ์๋ค. ํจ์๋ช ์ use์ด์ฉ๊ตฌ๋ก ์ง์์ผ๋ก์จ React์๊ฒ ํด๋น ํจ์๊ฐ ์ปค์คํ ํ ์ด๋ผ๋ ๊ฒ์ ์๋ ค์ค ์ ์๋ค.
์ธ์ ์ฌ์ฉํ ๊น?
ํ ์ ์ฌ์ฉํ๋ ๋ก์ง์ด ๋ฐ๋ณต๋๋ค๋ฉด ์ด๋ฅผ ์ปค์คํ ํ ์ผ๋ก ๋ถ๋ฆฌํ ์ ์๋ค.
๊ณต์ ๋ฌธ์์ ๋์์๋ ์์ ๋ฅผ ์ดํด๋ณด์.
- ์น๊ตฌ์ ์ ์ ์ํ๋ฅผ state๋ก ๊ด๋ฆฌํ๊ณ , state์ ๋ฐ๋ผ UI๋ฅผ ๋ณ๊ฒฝํ๋ค.
- useEffect๋ฅผ ์ด์ฉํด ์น๊ตฌ์ ์ ์ ์ํ๋ฅผ ์กฐํํ๋ API๋ฅผ ํธ์ถํ๋ค.
๋ ์ปดํฌ๋ํธ์์ ๊ฐ์ ๋ก์ง์ด ๋ฐ๋ณต๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ๋ฐ๋ก ์ด๋ด ๋ ํด๋น ๋ก์ง์ ์ปค์คํ ํ ์ผ๋ก ๋ถ๋ฆฌํ ์ ์๋ค.
์์๋ ์ธ๊ธํ์ง๋ง Custom Hook์ ํจ์๋ค. ์ธ์์ ๋ฆฌํด๊ฐ์ ๋ด๊ฐ ์ํ๋ ๋๋ก ์ ํ ์ ์๋ค. ์ด ์์ ์์๋ isOnline์ด๋ผ๋ ์ํ๊ฐ์ ๋ฆฌํดํ๋ค.
์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ๋์ผํ Hook์ ํธ์ถํ๋ค๋ฉด?
Each call to a Hook gets isolated state.
useState, useEffect๊ฐ ํฌํจ๋ ์ปค์คํ ํ ์ ํจ์ ๋ด์์ ํธ์ถํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ๊ฐ๋ฐ์ ์ ์ฅ์์๋ ์ปค์คํ ํ ์ ํธ์ถํ ๊ฒ์ด์ง๋ง, React๋ ์ด๋ฅผ ๊ทธ์ ์ผ๋ฐ์ ์ธ useState, useEffect๋ฅผ ํธ์ถํ ๊ฒ์ผ๋ก ์ฌ๊ธด๋ค๊ณ ํ๋ค. ๊ฐ ์ปดํฌ๋ํธ์ states, effects๊ฐ ์๋ก ์๋ฌด๋ฐ ๊ด๊ณ๋ฅผ ๊ฐ์ง ์๋ ๊ฒ์ฒ๋ผ, ๋์ผํ hook์ ํธ์ถํ์ ๋์๋ ๋ง์ฐฌ๊ฐ์ง๋ค.
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ชจ๋ํ์ ๊ฐ๋ ๋ถํฐ Yarn Berry๊น์ง (0) | 2022.10.10 |
---|---|
npm, yarn, pnpm์ ์ฐจ์ด์ ์ ๋น๊ตํด๋ณด์ (0) | 2022.09.26 |
Context API ์ ๋๋ก ์ดํดํ๊ธฐ (1) | 2022.09.22 |
useEffect ์ ๋๋ก ์ดํดํ๊ธฐ (2) | 2022.09.21 |
react-hook-form ๋ก๋ฉ ํ๋ฉด ๋ง๋ค๊ธฐ (0) | 2022.08.22 |