์๊ฐ์ด ์ง์ง ์์ด๋ ๊ฒ ๋นจ๋ฆฌ๊ฐ๋์ง ๋ชจ๋ฅด๊ฒ ๋ค.
๋ฉ์๋ ๊ณต๋ถํ๋ค ๊ฐ์๊ธฐ ๋ฆฌ์กํธ๋ก ๋์์จ ๋ธ๋ก๊ทธ..
๊ทธ์ฌ์ด์ ๊ต์ฅํ ๋ง์ ํ์ต์ด ์ด๋ฃจ์ด์ก์ง๋ง, ์ด์ ์ค๋ ๋ฆฌ์กํธ ์์ ๋ฃ๊ณ ๊นจ๋ฌ์๋ค.
"..์! ์ฌ๊ธฐ๊น์ง ์จ๊ฒ์ ๋ค ๋ฆฌ์กํธ ๋ฐฐ์ฐ๋ ค๊ณ ์จ๊ฑฐ๊ตฌ๋!! "
๊ทธ๋์ ๋ง์์ด ํธํด์ก๋ค. ๋ค๋ก ๊ตฌ๋ฅด๋ ์์ผ๋ก ๊ตฌ๋ฅด๋ ์ด์จ๋ ํ๋ก ํธ์๋์ ๊ฝ, ๋ฆฌ์กํธ๋ง ์ํด๋ ๋ฐ์๊ฐ๊ฒ ๊ตฌ๋..!
(๋ฌผ๋ก ๋ฆฌ์กํธ ์ํ๋ ค๋ฉด ์์ ๋ฐฐ์ด๊ฑฐ ๋ค์ํด์ผํจ)
์ฌํํผ ์ด์ ์ ๊ธฐ๋ณธ๋ฌธ๋ฒ์ ์ด์ด ์ค๋์ ๋ผ์ฐํฐ๋ฅผ ๊ณต๋ถํ๊ณ ,
๋ฆฌ์กํธ ๋ผ์ฐํฐ์ ์ฃผ์ ์ปดํฌ๋ํธ๋ฅผ ๋ฐฐ์ด๊ฒ ์์ฃผ๋ก ์ ๋ฆฌํด๋ณด๋ คํ๋ค.
๋จผ์ ๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ผ์ฐํฐ ๋ชจ๋์ด ๋ค์ด์๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ ๋์ ์ค์นํ์ฌ์ผํ๋ค.<์์ ํ์ผ ์ด์ด์ ํฐ๋ฏธ๋์>
npm install react-router-dom@5.3.0
์ฐ๋ฆฌ๋ ๋ฒ์ 5.3.0์ ์ฌ์ฉํ๋๋ฐ ์ต์ ๋ฒ์ ๋ฐ์ ๋๊ธฐ ๋ง๋ก๋ ๋ฌธ๋ฒ์ด ์กฐ๊ธ ๋ฌ๋ผ์ง๋๊ฑฐ ๊ฐ์์ ๋ค์ ๋ค์ด๊ทธ๋ ์ด๋ ํ๊ณ ์๋ค๊ณ ํ๋ค.
(์ฐ๋ฆฌ๋ ์ฝ๋์คํ ์ด์ธ ํ ์คํธ ํต๊ณผํด์ผํจ ใ ใ )
์ค์นํ Package.Json ํ์ผ๊ฐ๋ฉด ์ํ๋ ๋ฒ์ ์ผ๋ก ์ค์นํ๊ฒ ํ์ธ๊ฐ๋ฅํจ.
์ด์ ๋ฆฌ์กํธ ๋ผ์ฐํฐ ๋์์ ๋ด๊ฐ ์ฌ์ฉํ ๋ชจ๋์ ๊ตฌ์กฐ๋ถํด ํ ๋นํด์ ๊ฐ์ ธ์จ๋ค.( ๋ณ๊ฑฐ์๋๊ณ {์ค๊ดํธ ์์ ์ธ๊ฑฐ ์ ๊ธฐ^^})
๋์์ ๋ชจ๋ ๋ชจ๋์ ๋ค ์ฐ์ง์๊ธฐ ๋๋ฌธ์ ํ์ํ๊ฒ ์์ ๊ฐ์ ธ์ค๊ธฐ
import {BrowserRouter, Route, Switch} from 'react-router-dom';
import๋ค์๋ (์๋ฐ์คํฌ๋ฆฝํธ์ธ์ด๋ฅผ ์ป๊ธฐ๋๋ฌธ์ ์ค๊ดํธ์ ๋ฃ์ด์) ์ฌ์ฉ๋ชจ๋ ์ ์ด์ฃผ๊ณ from ๋ค์๋ ์ด๋์ ๊ฐ์ ธ์ฌ๊ฑด์ง
'์ด์์ '; ์ ์ด์ฃผ๋ฉด๋๋ค.
import React from 'react';
import './App.css';
import {BrowserRouter, Route, Switch} from 'react-router-dom';
import Sidebar from './Sidebar';
import Tweets from './Pages/Tweets';
import MyPage from './Pages/MyPage';
import About from './Pages/About';
๋น์ทํ ์๋ก ์์ ํ ํ์ผ์์ ๋๊ณ ์์ผํ ๋ค๋ฅธ ํ์ผ๋ค์ด ์๋ค๋ฉด
import ํ์ผ๋ช from './๊ฐ์ ธ์ฌ๊ณณ'; ํ๋ฉด๋๋ค. (๋์๋ฌธ์ ์ ์ํ์^^ <-๊ณ ์ํจ)
์ ์ด์ ํ๋ คํ ํ๊ทธ๋ค์ด ๊ฒฝ๋ก ์ง์ ํ ๊ฒ๋ค์ ๊ฐ์ธ์ผํจ
const App = () => {
return (
<BrowserRouter>
<div className="App">
<main>
<Sidebar />
<section className="features">
<Switch> //์ด๊ฒ ์์ผ๋ฉด ๋ฃจํธ๋ก ๋ถ๋ฌ์จ ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ์ฐ๊ฒฐ๋์ด ๋ณด์ฌ์ง.
<Route exact path = "/"> //path์์ฑ์ผ๋ก ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ค๋ค.
<Tweets/> //๋ถ๋ฌ์ฌ ์ปดํฌ๋ํธ๋ฅผ ์ฐ๊ฒฐํด์ค๋ค.
</Route>
<Route path = "/about">
<About/>
</Route>
<Route path = "/mypage">
<MyPage/>
</Route>
</Switch>
</section>
</main>
</div>
</BrowserRouter>
);
};
๋ณด๋ฉด ๋งจ์์ค ์ฑ์ด๋ผ๋ ์ปจํฌ๋ํธ์์ <BrowserRouter></BrowserRouter> ๋ก ์น๋ค ๊ฐ์ธ๊ณ
(์ปจํฌ๋ํธ์์ ํ๊ทธ๋ ๋ฑํ๋ ๋ฐ์ ๋ค๋ค์ด๊ฐ์ผํจ. ๋์ด ๋ ์์์ด~)
์ค๊ฐ๋ถ๋ถ <Switch></Switch> ์์ <Route></Route>
๋ฃจํธ์ ์์ฑ path(๋ฃจํธํ๊ทธ ์์ ์ ์ ์๊น import๋ ์ฃผ์์ ์๊ฑฐ์ฒ๋ผ ์ฃผ์์ํจ๊ป ) ๊น์ง ํ์ธํธ๋ก!!
๋ฃจํธ์์<MyPage/> (๋ถ๋ฌ์ค๋ ์ปดํฌ๋ํธ)๊น์ง ์ ์ด์ฃผ๋ฉด ๋ค๋ซ๋ต.
***์ฌ๊ธฐ๊น์ง ์ง์ง ๋์๋ฌธ์ ๋น์์ด์์***
import { Link } from 'react-router-dom';
const Sidebar = () => {
return (
<section className="sidebar">
<Link to = "/"> <i className="far fa-comment-dots"></i> </Link>
<Link to = "/about"><i className="far fa-question-circle"></i></Link>
<Link to = "/mypage"><i className="far fa-user"></i></Link>
</section>
);
};
path๋ฅผ ํตํด ์ฃผ์๋ฅผ ๋ง๋ค์๊ธฐ ๋๋ฌธ์
์ฌ๊ธฐ์๋ ๋งํฌ ๋ชจ๋๋ก ์์ด์ฝ์ ๋๋ฅด๋ฉด ํด๋น ํ์ด์ง๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ์ ๋ด ์๋ค.
์ผ๋จ, ๋งํฌ์ธ๊ฑฐ๋๊น import๋ก ๋งํฌ๊ฐ์ ธ์ค์.
๋ณด๊ธฐ์๊ฐ์ด ๋๋ฒ์งธ์ค์ ๋ณด๋ฉด ์ด๊ณณ์ ์ฌ์ด๋๋ฐ ์ปจํฌ๋ํธ์ด๊ณ
์ฌ์ด๋๋ฐ์์ ์์ด์ฝ์ด 3๊ฐ๊ฐ <i></i>์๋ค๋๊ฒ์ ์์์๋ค.
์์ด์ฝ ํ๋๋ง๋ค ๋งํฌ๋ก ๊ฐ์ธ๊ณ to = "" ์จ์ ์ด๋๋ก ๊ฐ๊ณ ์ถ์์ง ์ ํด์ฃผ์
'TIL -์ผ๊ฐํ์ต๊ธฐ๋ก > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Weather API & data component (0) | 2022.02.05 |
---|---|
[React ์์ต์] Tic Tac Toe.. (0) | 2022.02.03 |
[TodoList]create react app ์ค์น (0) | 2022.01.30 |
๋ฆฌ์กํธ๋ก Todo list๋ฅผ ๋ง๋ค์ด๋ณด์ (0) | 2022.01.30 |
REACT - 21.12.26 - JSX, STATE, PROPS (0) | 2021.12.26 |
๋๊ธ