์ปค์คํ
ํ
(Custom Hook)์ผ๋ก ๋ถ๋ฆฌํ๋ค๋ ๊ฒ์ ์ปดํฌ๋ํธ ๋ด๋ถ์ ์ํ ๊ด๋ฆฌ(useState), ๋ถ์ ํจ๊ณผ(useEffect), ๋๋ ๊ธฐํ ๋ก์ง์ ๋ณ๋์ ํจ์(์ปค์คํ
ํ
)๋ก ์ถ์ถํด ์ปดํฌ๋ํธ์ ๋
๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ปค์คํ
ํ
์ React์ ํ
(useState, useEffect ๋ฑ)์ ์ฌ์ฉํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก use๋ก ์์ํ๋ ์ด๋ฆ์ ๊ฐ์ง๋๋ค.
๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ
UI ๋ ๋๋ง๊ณผ ๊ธฐ๋ฅ ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์ ํฅ์
- ์ปดํฌ๋ํธ ๋ด๋ถ์ ์ํ ๊ด๋ฆฌ์ UI ๋ ๋๋ง ๋ก์ง์ด ์์ฌ ์์ผ๋ฉด ์ฝ๋๊ฐ ๋ณต์กํด์ง๊ณ ์ฝ๊ธฐ ์ด๋ ค์์ง๋๋ค.
- ํ ์ผ๋ก ๋ก์ง์ ๋ถ๋ฆฌํ๋ฉด ์ปดํฌ๋ํธ๋ JSX์ UI ๋ ๋๋ง์ ์ง์คํ๊ณ , ๋ก์ง์ ๋ณ๋๋ก ๊ด๋ฆฌ๋์ด ๊ฐ๋ ์ฑ์ด ํฅ์๋ฉ๋๋ค.
์ฌ์ฌ์ฉ์ฑ
๋์ผํ ๋ก์ง์ ์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ๋
- ๋์ผํ ๋ก์ง์ ์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ๋, ํ ์ผ๋ก ๋ถ๋ฆฌํ๋ฉด ์ค๋ณต ์ฝ๋๋ฅผ ์ค์ด๊ณ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
- ๋น๋ก ํ์ฌ ์ฌ์ฌ์ฉํ์ง ์๋๋ผ๋, ๋์ค์ ํ์ํ ๊ฐ๋ฅ์ฑ์ ๋๋นํด ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ ๋ฆฌํ ์ ์์ต๋๋ค.
ํ ์คํธ ์ฉ์ด์ฑ
UI๋ ๋๋ง๊ณผ ๊ธฐ๋ฅ ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฒ์ฆ ๊ฐ๋ฅ
- ํ ์ ์ปดํฌ๋ํธ์ ๋ ๋ฆฝ์ ์ผ๋ก ํ ์คํธํ ์ ์์ต๋๋ค. UI๋ฅผ ๋ ๋๋งํ์ง ์๊ณ ๋ก์ง๋ง ๊ฒ์ฆ ๊ฐ๋ฅ.
- ์: useCounter ํ ์ ํ ์คํธํ ๋, ์นด์ดํธ ์ฆ๊ฐ์ ํ์ด๋จธ ๋์์ ๋ณ๋๋ก ํ์ธํ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ ๋ณ๋ก ๋ถ๋ฆฌ
์ํ ๊ด๋ฆฌ
๋ฐ์ดํฐ fetching
์ด๋ฒคํธ ์ฒ๋ฆฌ
์บก์ํ
- ์ํ ๊ด๋ฆฌ, ๋ฐ์ดํฐ fetching, ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฑ ํน์ ๊ธฐ๋ฅ(๊ด์ฌ์ฌ)์ ํ ์ผ๋ก ์บก์ํํด ์ปดํฌ๋ํธ์ ์ฑ ์์ ์ค์ ๋๋ค.
- ์ด๋ ์ฝ๋์ ๋ชจ๋ํ์ ์ ์ง๋ณด์์ฑ์ ๋์ ๋๋ค.
๋ณต์กํ ๋ก์ง ๊ด๋ฆฌ
๋ก์ง์ ์ฒด๊ณ์ ์ผ๋ก ๊ตฌ์กฐํ
- ๋ก์ง์ด ๋ณต์กํ ์๋ก(์: ์ฌ๋ฌ useState, useEffect ์กฐํฉ) ์ปดํฌ๋ํธ ๋ด๋ถ์ ๋๋ฉด ๊ด๋ฆฌ๊ฐ ์ด๋ ต์ต๋๋ค. ํ ์ผ๋ก ๋ถ๋ฆฌํ๋ฉด ๋ก์ง์ ์ฒด๊ณ์ ์ผ๋ก ๊ตฌ์กฐํํ ์ ์์ต๋๋ค.
์ธ์ ํ ์ผ๋ก ๋ถ๋ฆฌํด์ผ ํ๋?
- ๋ก์ง์ด ๋ณต์กํ๊ฑฐ๋ ์ฌ๋ฌ ์ค์ ์ฝ๋๋ฅผ ์ฐจ์งํ ๋(์: useEffect์ useState๊ฐ ์กฐํฉ๋ ๊ฒฝ์ฐ).
- ๊ฐ๋ ์ฑ์ ๋์ด๊ณ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์ ์งํ๊ณ ์ถ์ ๋.
- ํ ์คํธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ํํ๊ณ ์ถ์ ๋.
- ํ์ฌ ๋๋ ๋ฏธ๋์ ๋ก์ง์ ์ฌ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ์ด ์์ ๋.
- ์) ๋ฐ์ดํฐ fetching, ํผ ๊ด๋ฆฌ, ํ์ด๋จธ, ์ ๋๋ฉ์ด์ ๋ฑ.
๋ถ๋ฆฌํ์ง ์์๋ ๋๋ ๊ฒฝ์ฐ?
- ๋ก์ง์ด ๋งค์ฐ ๋จ์ํ ๋(์: ๋จ์ผ useState๋ก ์ถฉ๋ถํ ๊ฒฝ์ฐ).
- ๋ก์ง์ด ํน์ ์ปดํฌ๋ํธ์ ๊ฐํ๊ฒ ์์กด์ ์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ์ฑ์ด ์ ํ ์์ ๋.
- ์ถ๊ฐ ํ์ผ์ ๋ง๋๋ ์ค๋ฒํค๋๊ฐ ๋ก์ง์ ๋ณต์ก๋์ ๋นํด ํด ๋.
- ์) const [isOpen, setIsOpen] = useState(false); ๊ฐ์ ๋จ์ํ ์ํ ๊ด๋ฆฌ.