์น์ฌ์ดํธ๋ ์ฌ์ฉ์๊ฐ ์ด๋ค ํ์ด์ง๋ก ์ด๋ํ๊ธฐ ์ํด ๊ฒฝ๋ก๋ฅผ ์์ฒญํ๋ฉด ๊ทธ ๊ฒฝ๋ก์ ํด๋นํ๋ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค์ผ ํ๋ค.
MPA ๋ฐฉ์์ ์ค์ ๋ก ํ์ด์ง๊ฐ ์ฌ๋ฌ๊ฐ๊ฐ ์๊ณ ์๋ฒ์ธก์์ ๊ฐ ๊ฒฝ๋ก์ ํด๋นํ๋ ํ์ด์ง๋ฅผ ์๋ตํ๋ ๋ผ์ฐํ ์ฒ๋ฆฌ๋ฅผ ํด์ ํ์ด์ง ์ด๋์ ๊ตฌํํ์ง๋ง, ๋ฆฌ์กํธ๋ SPA ๋ฐฉ์์ผ๋ก ์ฑ์ ๊ตฌ์ฑํ๋ฏ๋ก ํ๋์ ํ์ด์ง์์ ์์ฒญ๋ฐ์ ๊ฒฝ๋ก์ ํด๋นํ๋ ๋ทฐ์ ๋ชจ์ต์ ๊ตฌํํ์ฌ ๋ณด์ฌ์ค์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฆฌ์กํธ์์ ๊ฐ ๊ฒฝ๋ก์ ๋ผ์ฐํ ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ํ๋ค.
์ด๋ ๊ฒ ๊ฒฝ๋ก๋ง๋ค ๋ค๋ฅธ ์๋ต์ ํ์ฌ ํ์ด์ง ์ด๋์ ๊ตฌํํ๋๊ฒ์ ์ฝ๊ฒ ํด์ฃผ๋ ๋๊ตฌ๊ฐ react-router ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
React-Router๋ ์ ๊ท ํ์ด์ง๋ฅผ ๋ถ๋ฌ์ค์ง ์๋ ์ํฉ์์ ๊ฐ๊ฐ์ url์ ๋ฐ๋ผ ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ํ์ด์ง์์ ๋ ๋๋ง ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ผ๊ณ ๋ณผ ์ ์๋ค.
์ถ์ฒ : https://goddaehee.tistory.com/305
์น์์๋ react-router-dom ์ ์ฌ์ฉํ๋ค. react-router์ react-router-dom์ ์ฐจ์ด๊ฐ ๊ถ๊ธํ๋ค๋ฉด ์๋ ํ์ด์ง ์ฐธ๊ณ !
BrowserRouter๋ ๋ผ์ฐํ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๊ณ ์ถ์ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ธ๋ Wrapper ์ปดํฌ๋ํธ๋ก, HTML5์ History API๋ฅผ ์ฌ์ฉํ์ฌ UI์ URL์ ์ฑํฌ๋ฅผ ๋ง์ถ๋ ์ญํ ์ ํ๋ค.
ํน์ ์ปดํฌ๋ํธ๋ฅผ BrowserRouter๋ก ๊ฐ์ธ๋ฉด ๊ทธ ์ปดํฌ๋ํธ๋ BrowserRouter์ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๋ ํ๊ฒฝ์ด ๋๋ค.
์ฆ react-router-dom์ ์ ์ฉํ๊ณ ์ถ์ ์ปดํฌ๋ํธ๋ฅผ <BrowserRouter></BrowserRouter>
๋ก ๊ฐ์ธ์ค์ผ ํ๋ค.
๋ง์ฝ App ์ปดํฌ๋ํธ์์ ๋ผ์ฐํ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๊ณ ์ถ๋ค๋ฉด
import{ BrowserRouter, Route, Switch} from'react-router-dom'
export functionApp() {
return (
<BrowserRouter>
<Switch>
<Routepath="/about"><AboutPage/></Route>
<Routepath="/contact"><ContactPage/></Route>
<Routepath="/"><HomePage/></Route>
</Switch>
</BrowserRouter>
);
}
์ด๋ ๊ฒ ์ปดํฌ๋ํธ์ return์ ์ต์์ ์ปดํฌ๋ํธ๋ก ๊ฐ์ธ์ฃผ๊ฑฐ๋
ReactDOM.render(<BrowserRouter><App /></BrowserRouter>, document.getElementById("root"));
์ ๊ฐ์ด App ์ปดํฌ๋ํธ ์์ฒด๋ฅผ ๊ฐ์ธ์ฃผ๋ฉด ๋๋ค.
์ด๋ ๊ฒ App ์ปดํฌ๋ํธ์ BrowserRouter๋ฅผ ์์์ฃผ๋ฉด App ์ปดํฌ๋ํธ ๋ด์์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค์ ๊ฐ๊ฐ์ ํจ์ ์ ์๋ถ์์ BrowserRouter ์์ด ๊ทธ๋ฅ ํ๊ณ ์ถ์ ๋ผ์ฐํ ์ฒ๋ฆฌ ํด์ฃผ๋ฉด ๋๋ค.
์ต์์ ์ปดํฌ๋ํธ์ BrowserRouter๋ฅผ ์์๋จ์ผ๋ฉด ๊ทธ ์ปดํฌ๋ํธ์ ํ์ ์ปดํฌ๋ํธ๋ค์๊น์ง ๋ค ์ ์ฉ์ด ๋๊ธฐ๋๋ฌธ!
์ฒ์์ ๋ผ์ฐํ ์ฒ๋ฆฌ ํ๋ ์ปดํฌ๋ํธ๋ง๋ค ๋ค ์์์ผํ๋์ค์๊ณ ํ๋๋ฐ ์๋๋๋ผ. ์ค์ฒฉ์ผ๋ก ์์ฐ๋ฉด ์๋ฌ๋จ
Route๋ ํน์ ๊ฒฝ๋ก๋ก ์์ฒญ์ด ๋ค์ด์์๋ ํ๋ฉด์ ๋ ๋๋ง๋ ์ปดํฌ๋ํธ๋ฅผ ์ง์ ์ฃผ๋ ์ฉ๋์ ํ๊ทธ์ด๋ค.
Route ํ๊ทธ์ path props๋ฅผ ์ง์ ํ์ฌ ์ด๋ค ๊ฒฝ๋ก์ธ ๊ฒฝ์ฐ์ ์๋ต์ ํ ๊ฒ์ธ์ง๋ฅผ ์ ํด์ค ์ ์๋ค.
Route๋ฅผ ์ด์ฉํ ๋ผ์ฐํ ๋ฐฉ๋ฒ์ ๋๊ฐ์ง๊ฐ ์๋ค.
<Route path="/login"><LoginForm /></Route>
<Route path="/login" component={LoginForm} />
react-router-dom์ด v6๋ก ์ ๋ฐ์ดํธ๋๋ฉด์ props๋ช ์ด element์ธ props๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ํต์ผํ๊ฒ ๋์๋ค.
<Route path="/login" element={ <LoginForm /> }
element props์ ๊ฐ๋ ์๋ ์ปดํฌ๋ํธ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ <LoginForm />
์ด๋ผ๊ณ ํด์ค์ผํจ!
Route๋ฅผ ์ฌ์ฉํ ๋ ํ๊ฐ์ง ์ฃผ์์ฌํญ์ด ์๋ค.
์๋ path๋ก ์ง์ ํ ๊ฒฝ๋ก์ ์์ ํ ๊ฐ์ ๊ฒฝ์ฐ ๋ง๊ณ ๋ถ๋ถ์ ์ผ๋ก ๊ฐ์ ๊ฒฝ์ฐ์๋ ์๋ต์ ์ํจ๋ค.
<Route path="/" element={<Topics />} />
<Route path="/topics" element={<Topics />} />
์ด๋ ๊ฒ ๋๊ฐ์ ๋ผ์ฐํฐ๊ฐ ์๋ค๊ณ ํ์.
"/" path ์์ฒญ์ด ์ค๋ฉด "/" ๋ผ์ฐํฐ๊ฐ ์๋ตํ๋ค.
ํ์ง๋ง "/topics" ๋ผ๋ path ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๋น์ฐํ "/topics" ๋ผ์ฐํฐ๊ฐ ์๋ตํ์ง๋ง, "/" ๋ผ์ฐํฐ๋ ๊ฐ์ด ์๋ตํ๋ค.
"/topics" path ์์ฒญ์์ topics๊ฐ ๋์ค๊ธฐ ์ ์ "/" ๋ผ๋ ๊ฒฝ๋ก์ ๋งค์นญ์ด ๋๋ "/" ๋ผ์ฐํฐ๋ ์๋ต์ ํด๋ฒ๋ฆฌ๋ ๊ฒ์ด๋ค.
์ฆ path๊ฐ A๋ผ๊ณ ํ๋ฉด, path๊ฐ A๋ก ์์ํ๋ ๋ค๋ฅธ ์์ฒญ๋ค๊ณผ๋ ๋งค์นญ์ด ๋์ด๋ฒ๋ฆฌ๋ ๊ฒ์ด๋ค.
Route์ exact๋ผ๋ ์์ฑ์ ์ง์ ํ๋ฉด ์ด๋ฅผ ์๋ฐฉํ ์ ์๋ค. exact๋ฅผ ์ง์ ํ๋ฉด path์ ์์ ํ ์ผ์นํ๋ ๊ฒฝ๋ก์ ์์ฒญ์๋ง ๋ผ์ฐํฐ๊ฐ ์๋ตํ๋ค.
<Route exact path="/"><Main /></Route>
์ด๋ ๊ฒ ํ๋ฉด ์ด ๋ผ์ฐํฐ๋ ๊ฒฝ๋ก๊ฐ ์ค์ง "/" ์ธ ์์ฒญ์๋ง ์๋ตํ๊ฒ ๋๋ค.
"/"๋ก ์์ํ๋ ๋ค๋ฅธ ๊ฒฝ๋ก๋ค์๋ ์๋ตํ์ง ์๋๋ค.
์ต์์ ๊ฒฝ๋ก "/"๋ ์ด๋ค ๊ฒฝ๋ก์๋ ์์๋ถ๋ถ์ผ๋ก ํฌํจ๋๊ธฐ๋๋ฌธ์ ๋ณดํต "/" ๊ฒฝ๋ก ๋ผ์ฐํฐ์๋ exact๋ฅผ ์ง์ ํด์ค๋ค.
โป react-router-dom v6๋ก ์ ๋ฐ์ดํธ๋๋ฉด์ Route๋ ๋ฐ๋์ Routes ๋ด๋ถ์์ ์ฌ์ฉ๋์ด์ผ ํ๋ค.
react-router-dom v6 ์์๋ Route๋ ๋ช๊ฐ๋ฅผ ์ฐ๋ ๋ฐ๋์ ๋ค์ ๋์ฌ Routes ํ๊ทธ๋ก ๊ฐ์ธ์ค์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ก์ธํด exact๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ์ด์ ์ฐ์ด์ง ์๊ฒ ๋์๋ค. ๋ฐ๋ก ๋ฐ์์ ์์ธํ ์ค๋ช
exact๋ฅผ ์ฐ์ง ์๊ณ ๋ Route๋ค์ค ๋งค์นญ๋๋ ๊ฒฝ๋ก ํ๋๋ง ์๋ต์ ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด ์๋๋ฐ ๊ทธ๋ ์ฐ๋๊ฒ Switch ํ๊ทธ์ด๋ค. (v6 ์ด์ )
โป react-router-dom v6๋ก ์ ๋ฐ์ดํธ๋๋ฉด์ ์ด๋ฆ์ด Switch -> Routes ๋ก ๋ฐ๋์๋ค.
Routes(Switch)๋ก Route๋ค์ ๊ฐ์ธ๋ฉด ์ด ๋ผ์ฐํฐ๋ค์ค ๊ฒฝ๋ก๊ฐ ๋งค์นญ๋๋ ํ๋์ ๋ผ์ฐํฐ๋ง ์๋ตํ๋ค.
ํ์ง๋ง ์๋ ์ฃผ์ํด์ผํ ์ ์ด ์๋๋ฐ, ๋ฐ๋ก ์ด๋ ํ ๋ผ์ฐํฐ์ path๊ฐ ๋งค์นญ๋๋ฉด ๊ฑ๋ฅผ ์ฑํํ๊ณ ๋ฐ์์๋ ์ ๋ค์ ๋ฌด์ํ๋ค๋๊ฑฐ๋ค.
<Routes>
<Route path="/" element={<Main />} />
<Route path="/topics" element={<Topics />} />
<Route path="/login" element={<Login />} />
</Routes>
์ด๋ ๊ฒ ๋์ด์์๋, "/topics" ์์ฒญ์ด ๋ค์ด์ค๋ฉด /topics ๋ผ์ฐํฐ๊ฐ ์๋ตํ ๊ฒ ๊ฐ์ง๋ง "/" ๋ผ์ฐํฐ๊ฐ ์๋ตํ๋ค.
Routes ๋ด์ ์๋ ๋ผ์ฐํฐ๋ค์ค /topics ๊ฒฝ๋ก์ ๋งค์นญ๋๋์ ๋ฅผ ํ์ํ๋๋ฐ, ์์ Route ์์ ์ธ๊ธํ ์ด์ ๋ก ๊ฐ์ฅ ์์ ์๋ "/" ๊ฒฝ๋ก๊ฐ /topics ๊ฒฝ๋ก์ ๋งค์นญ์ด ๋๋ฉด์ ๋๋จธ์ง ์ ๋ค์ ๋ฒ๋ฆฌ๊ณ ์๋ก ๋ฐ๋ก ์๋ต์ ํด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค.
"/" ๋ผ์ฐํฐ๋ฅผ ์ ์ผ ๋ฐ์ ๋ฐฐ์น์ํค๋ฉด ์ด๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
<Routes>
<Route path="/topics" element={<Topics />} />
<Route path="/login" element={<Login />} />
<Route path="/" element={<Main />} />
</Routes>
๋ํ exact ์์ฑ์ ์จ์ ํด๊ฒฐํ ์๋ ์๋ค.
<Routes>
<Route exact path="/" element={<Main />} />
<Route path="/topics" element={<Topics />} />
<Route path="/login" element={<Login />} />
</Routes>
exact๋ฅผ ์ฐ์ง ์๋์ด์ "/" ๊ฒฝ๋ก๋ ๋ชจ๋ ๊ฒฝ๋ก์ ๋งค์นญ๋๋ค๋ ์ ์ ์ด์ฉํด์ "/" ๋ผ์ฐํฐ๋ฅผ ์ ์ผ ๋ฐ์ ๋ฐฐ์น์์ผ ์๋ฌ ํ์ด์ง๋ฅผ ์ ๋ด์ํฌ ์ ์๋ค.
๋ง์ฝ ์ฌ์ฉ์๊ฐ ๋ญ์ง๋ชจ๋ฅผ ์ด์ํ ๊ฒฝ๋ก๋ก ๋ค์ด์ค๋ ๊ฒฝ์ฐ, ์ด๋ ํ ์๋ฌ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์ถ๋ค๊ณ ํด๋ณด์.
๊ทธ ์ด์ํ ๊ฒฝ๋ก์ ๋ํ ๋ผ์ฐํฐ๊ฐ ์์ผ๋ฉด ์๋ฌด ํ๋ฉด๋ ๋จ์ง ์์๊ฒ์ด๋ค. ๊ทธ ๊ฒฝ๋ก์ ๋ง๋ ๋ผ์ฐํฐ๊ฐ ์์ด์ผ ํ๋๋ฐ ์ฌ์ฉ์๊ฐ ์ด๋ค ๊ฒฝ๋ก๋ฅผ ์น ์ง ๋ชจ๋ฅด๋ ๋ฑ ๋ง๋ ๋ผ์ฐํฐ๋ฅผ ๋ง๋ค์ด ๋์์๋ ์๋ ๋ ธ๋ฆ์ด๋ค.
์ด๋ฐ ๊ฒฝ์ฐ, "/" path๊ฐ ์ด๋ค path์๋ ๋ค ๋งค์นญ๋๋๊น "/" ๋ผ์ฐํฐ๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค. ์ฌ์ฉ์๊ฐ ์ด๋ ํ ๊ฒฝ๋ก๋ฅผ ์น๋ ์์์ /๋ก ์์ํ ํ ๋ "/" ๋ผ์ฐํฐ์ ๊ฑธ๋ฆด๊ฒ์ด๋ค.
<Routes>
<Route exact path="/" element={<Main />} />
<Route path="/topics" element={<Topics />} />
<Route path="/login" element={<Login />} />
<Route path="/" element={<Error />} />
</Routes>
"/" ๋ผ๋ ๊ฒฝ๋ก๋ exact ๋ "/" ๋ผ์ฐํฐ๊ฐ ๋ฐ๊ณ , "/"๋ก ์์ํ๋ ๋ชจ๋ ๊ฒฝ๋ก์ค Route๋ก ์ง์ ๋์ด์๋ ๊ฒฝ๋ก๋ฅผ ์ ์ธํ ๋ค๋ฅธ ๋ชจ๋ ๊ฒฝ๋ก๋ ๋งจ ๋ง์ง๋ง "/" ๋ผ์ฐํฐ๊น์ง ๋ด๋ ค์์ ์ฌ๊ธฐ์ ๊ฑธ๋ฆด๊ฒ์ด๋ ์ฌ๊ธฐ์์ ์๋ฌํ์ด์ง ์ปดํฌ๋ํธ๋ก ์๋ตํด์ฃผ๋ ๋ฐฉ๋ฒ์ ํ์ฉํ ์ ์๊ฒ ๋ค.
โป react-router-dom v6๋ก ์ ๋ฐ์ดํธ๋๋ฉด์ exact ์ต์ ์ด ์ญ์ ๋์๋ค.
๊ธฐ์กด์๋ ๋ผ์ฐํฐ์ path๊ฐ ์์ฒญ๋ฐ์ path name์ ์๋ถ๋ถ๊ณผ ์ผ์นํ๋ฉด ๋ค ๋งค์นญ๋์๊ณ ์ ํํ ์ผ์นํ๋ ๊ฒฝ๋ก๋ง ๋งค์นญ์ํค๊ธฐ ์ํด exact ์ต์ ์ ์ฌ์ฉํ์๋ค.
ํ์ง๋ง v6 ๋ฒ์ ์ exact ์ต์ ์ด ์ฌ๋ผ์ก๊ณ , ์ด์ ์์๋ถ๋ถ์ด ๊ฐ๋ค๊ณ ๋ค ๋งค์นญ๋์ง ์๊ณ ์ ํํ ๊ฐ์ ๊ฒฝ๋ก์๋ง ๋งค์นญ๋๋ค.
์์๋ถ๋ถ์ด ๊ฐ์ ๋ณต์๊ฐ์ ๊ฒฝ๋ก๋ฅผ ๋งค์นญ์ํค๊ณ ์ถ๋ค๋ฉด * ๊ธฐํธ(์ ์คํฐ๋ฆฌ์คํฌ)๋ฅผ ํ์ฉํ๋ค.
<Routes>
<Route path="/" element={<Main />} />
<Route path="/topics" element={<Topics />} />
<Route path="/login" element={<Login />} />
<Route path="/*" element={<Error />} />
</Routes>
๊ฒฝ๋ก์ * ๊ฐ ์์ผ๋ฉด ์ฌ๊ธฐ๋ถํฐ๋ ์ด๋ค path name์ด๋ ๋ค ๋งค์นญํ๋ค๋ ์๋ฏธ์ด๋ค.
๋งจ ๋ง์ง๋ง ๋ผ์ฐํฐ์ฒ๋ผ path๋ฅผ /* ๋ก ํ๋ฉด / ๋ค๋ก๋ ๋ญ๊ฐ ์ค๋ ๋ค ๋ฐ๊ฒ ๋ค๋ ๊ฒ์ด๋, /๋ก ์์ํ๋ ๊ฒฝ๋ก๋ ์์์ ๋ฐ๋ก ๋ผ์ฐํฐ๋ก ์ง์ ๋ ๊ฒฝ๋ก๊ฐ ์๋๋ฉด ์ด๋ค ๊ฒฝ๋ก๋ ๋ค ๋งค์นญ๋๋ ์๋ฌํ์ด์ง ๋ด๋น ๋ผ์ฐํฐ๋ก ํ์ฉํ ์ ์๋ค.
<li><a href="/">home</a></li>
<li><a href="/topics">topics</a></li>
<li><a href="/login">login</a></li>
์ด๋ ํ ๊ฒฝ๋ก๋ก ์์ฒญ์ ๋ณด๋ผ ๋งํฌ๋ฅผ ๋ง๋ ๋ค๊ณ ํ๋ฉด ๋ณดํต์ ์์๊ฐ์ด a ํ๊ทธ๋ฅผ ์ด์ฉํด ์์ฒญํ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ฌ ๋งํฌ๋ฅผ ์์ฑํ๋ค.
์ด๋ ๊ฒ a ํ๊ทธ๋ก ๋ง๋ ๋งํฌ๋ ๊ทธ ๊ฒฝ๋ก ์์ฒญ์ ๋ํ ์๋ต ํ์ด์ง๋ฅผ ๋งค๋ฒ ์๋ก ๋ฐ์์์ ํ์ด์ง๊ฐ ๋ฆฌ๋ก๋ ๋๋ค.
ํ์ง๋ง react-router-dom์๋ SPA ๋ฐฉ์์ผ๋ก path ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํ Link ํ๊ทธ๊ฐ ์๋ค.
Link ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ ๋งํฌ๋ ํด๋น ๋งํฌ๋ฅผ ๋๋ ์๋, ํ์ด์ง ๋ฆฌ๋ก๋ ์์ด ํด๋น ๊ฒฝ๋ก ์์ฒญ์ ๋ํ ์๋ต์ ๋ฐ์ ๋ฐ๋ก ํ๋ฉด์ด ๋ ๋๋ง ๋๋ค.
(๋ฌผ๋ก ํด๋น ๋งํฌ์ ๊ฒฝ๋ก์ ํด๋จ ๋ผ์ฐํ
์ฒ๋ฆฌ๊ฐ ๋์ด์์๋์ ์๊ธฐ)
a ํ๊ทธ์ ๊ฒฝ๋ก ์ง์ ์์ฑ์ href ์ง๋ง Link ํ๊ทธ์ ๊ฒฝ๋ก ์ง์ ์์ฑ์ to ์ด๋ค.
<li><Link to="/">home</Link></li>
<li><Link to="/topics">topics</Link></li>
<li><Link to="/login">login</Link></li>
Link ํ๊ทธ์ ๊ธฐ๋ฅ์ ๊ฐ์๋ฐ ์ฌ๊ธฐ์ ์ข์ ๊ธฐ๋ฅ์ด ํ๋ ์ถ๊ฐ๋ ํ๊ทธ์ด๋ค.
NavLink๋ก ๊ฐ์ผ ๋งํฌ๋ฅผ ๋๋ฌ ํด๋น ๊ฒฝ๋ก๋ก ์ด๋ํ๋ฉด HTML ์์ NavLink๋ก ๊ฐ์ผ ์์์ active๋ผ๋ ์ด๋ฆ์ ํด๋์ค๊ฐ ์ถ๊ฐ๋๋ค.
home ๋งํฌ๋ฅผ ๋๋ฌ / ๊ฒฝ๋ก๋ก ๋ค์ด์์๋ ๊ฒฝ์ฐ์ ํ๋ฉด์ด๋ค. ์ค์ HTML ์์์๋ NavLink๋ก ๊ฐ์ผ ๋ถ๋ถ์ด a ํ๊ทธ๋ก ๋์ค๋๋ฐ ๊ฑฐ๊ธฐ์ home์ ๊ฐ์ธ๋ a ํ๊ทธ์๋ง active ๋ผ๋ ์ด๋ฆ์ ํด๋์ค์ aria-current๋ผ๋ ๋ญ์ง๋ชจ๋ฅผ๊ฒ ์ถ๊ฐ๋์ด์๋ ๋ชจ์ต์ด๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๊ฐ active ๋ผ๋ ํด๋์ค๋ช ์ css๋ฅผ ์ง์ ํด์ค์ ํ์ฌ ์ฌ์ฉ์๊ฐ ์ด๋ ๋งํฌ๋ฅผ ๋๋ฌ์ ๋ค์ด์์๋์ง๋ฅผ ์ํ๋ ๋ชจ์ต์ผ๋ก ํ์ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ํ์ฉ์ด ๊ฐ๋ฅํ๋ค.
๊ทธ๋์ ์ด๋ฆ ๊ทธ๋๋ก Nav ๋ฐ ๊ฐ์๋ฐ์ ์ฌ์ฉํ๋ฉด ๊ต์ฅํ ์ ์ฉํ ๋ฏ ํ๋ค.
์ฐธ๊ณ ์๋ฃ
https://velog.io/@po05360/React-Router-Dom
https://phsun102.tistory.com/91