์ปดํฌ๋ํธ ์์์ ๋ฐ์ดํฐ(์ํ)๋ฅผ ์ ์ฅํ๊ณ ์
๋ฐ์ดํธํ ์ ์๋๋ก ๋์์ฃผ๋ Hook
๋ฆฌ์กํธ๋ ๋ฐ์ดํฐ๊ฐ ๋ณํ๋ฉด ํ๋ฉด์ด ์๋์ผ๋ก ๋ฐ๋๋๋ฐ, ๊ทธ ๋ณํ๋ฅผ ๊ฐ์งํ๋ ๊ธฐ๋ณธ ๋จ์๊ฐ ๋ฐ๋ก useState์ด๋ค.
๊ตฌ์กฐ:
import { useState } from 'react';
const [state, setState] = useState(์ด๊ธฐ๊ฐ);
์ํ๊ฐ์ ์ ์ธํ๊ณ setState()๋ก ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ์๋์ผ๋ก ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋๋ค.
ํน์ ๊ฐ์ด ๋ฐ๋ ๋ ์๋์ผ๋ก ์คํ๋๋ ํจ์๋ฅผ ์ ์
API ์์ฒญ, ๋ก์ปฌ์คํ ๋ฆฌ์ง ์ ๊ทผ, ์ด๋ฒคํธ ๋ฑ๋ก ๋ฑ ์ฌ์ด๋ ์ดํํธ(side effect) ์์
์ ํ๋ค.
๊ตฌ์กฐ:
import { useEffect } from 'react';
useEffect(() => {
// ์คํํ ์ฝ๋
}, [์์กด์ฑ]);
์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ๋ ๋ ํน์ ํน์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋ ์คํ๋๋ค.
React Router์์ ์ ๊ณตํ๋ Hook์ผ๋ก, ํ์ด์ง ๊ฐ ์ด๋ ๋ด๋น
SPA(Single Page Application)์์ ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจ ์์ด ์ ํํ ์ ์๊ฒ ํด์ค๋ค.
๊ตฌ์กฐ:
import { useNavigate } from 'react-router-dom';
const navigate = useNavigate();
navigate('/์ด๋ํ /๊ฒฝ๋ก');
ํ์ด์ง ์ด๋ ์ ์ฌ์ฉํ๋ฉฐ, React Router v6 ์ด์์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
์ํ๋ useState๋ก ๊ธฐ์ตํ๊ณ
๋ณํ๋ useEffect๋ก ๊ฐ์งํ๋ฉฐ
์ด๋์ useNavigate๋ก ์คํํ๋ค.