react-router-dom ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
ํฐ๋ฏธ๋์ ๋ค์ ๋ช ๋ น์ด ์ ๋ ฅ
npm install react-router-dom@6
๊ทธ ๋ค์ index.js ํ์ผ๋ก ๊ฐ์
import { BrowserRouter } from "react-router-dom";
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>
);
โฒ import ์ด์ฉ๊ตฌ ํด์ค๊ณ <BrowserRouter> ์ด๊ฑธ๋ก <App/> ์ด๊ฑธ ๊ฐ์ธ๋ฉด ๋
๋ผ์ฐํ ์ฌ์ฉ๋ฒ
- App.js
import './App.css';
import {Routes, Route, Link} from 'react-router-dom';
function App() {
let [shoes] = useState(data);
return (
<div className="App">
<Routes>
<Route path="/" element={<div>๋ฉ์ธํ์ด์ง</div>}/>
<Route path="/detail" element={<div>์์ธํ์ด์ง</div>}/>
<Route path="/cart" element={<div>์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง</div>}/>
</Routes>
</div>
);
}
export default App;
๋ฒํผ ๋๋ ์ ๋ ํ์ด์ง ์ด๋ํ๊ธฐ
<Link to='/detail'></Link>
import './App.css';
import {Routes, Route, Link} from 'react-router-dom';
function App() {
let [shoes] = useState(data);
return (
<div className="App">
<Routes>
<Route path="/" element={<div>๋ฉ์ธํ์ด์ง</div>}/>
<Route path="/detail" element={<div>์์ธํ์ด์ง</div>}/>
<Route path="/cart" element={<div>์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง</div>}/>
</Routes>
<Link to="/">ํ</Link> //ํ์ผ๋ก ๊ฐ๋ ๋ฒํผ
<Link to="/detail">์์ธํ์ด์ง</Link> //์์ธํ์ด์ง๋ก ๊ฐ๋ ๋ฒํผ
</div>
);
}
export default App;
useNavigate() ํจ์
useNavigate()ํจ์๋ <Link>ํ๊ทธ์ ๊ฐ์ด ํ์ด์ง ์ด๋์ ๋์์ค๋ค.
function App(){
let navigate = useNavigate()
return (
(์๋ต)
<button onClick={()=>{ navigate('/detail') }}>์ด๋๋ฒํผ</button>
<button onClick={()=>{ navigate(-1) }}>๋ค๋ก 1๋ฒ ๊ฐ๊ธฐ</button>
<button onClick={()=>{ navigate(2) }}>์์ผ๋ก 2๋ฒ ๊ฐ๊ธฐ</button>
)
}
nested routes
<Route>์์ <Route>๋ฅผ ๋ฃ์ ์ ์๋๋ฐ ์ด๊ฑธ Nested routes ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ฌ๋ฌ ํ์ด์ง๊ฐ ํ์ํ๊ณ , ๊ทธ ํ์ด์ง๋ค ๊ฐ์ ์ฐจ์ด์ ์ด ๋ณ๋ก ์์ ๋ ์ฌ์ฉํ๋ฉด ์ข๋ค.
(์ผ๋ฐ์ ์ธ ๋ฐฉ์)
<Route path="/about" element={<About></About>}/>
<Route path="/about/member" element={<About></About>}/>
(nested routes ๋ฐฉ์)
<Route path="/about" element={<About></About>}>
<Route path="member" element={<About></About>}/>
</Route>
์ฅ์ 1) route ์์ฑ์ด ๊ฐ๋จํด์ง ์ ์๋ค.
์ฅ์ 2) nested route ์ ์์์ element 2๊ฐ๊ฐ ๋ณด์ธ๋ค. => ๋ณด์ฌ์ง ์์น๋ฅผ ์ง์ ํด์ผ element 2๊ฐ๊ฐ ๋ค ๋ณด์ธ๋ค.
import './App.css';
import {Routes, Route, Link, useNavigate, Outlet } from 'react-router-dom';
function App() {
return (
<div className="App">
<Routes>
//nested routes
<Route path="/about" element={<About></About>}>
<Route path="member" element={<div>member์ ๋ณด</div>}/>
</Route>
</Routes>
</div>
);
}
function About() {
return (
<div>
<h4>ํ์ฌ์ ๋ณด</h4>
<Outlet></Outlet> //outletํ๊ทธ๋ก ๋ณด์ฌ์ง ์์น ์ง์
</div>
)
}
export default App;
'๐ปWEB FrontEnd > ํ๋ ์์ํฌ React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ปดํฌ๋ํธ์ Lifecycle (0) | 2022.07.08 |
---|---|
detail ํ์ด์ง ๋ง๋ค๊ธฐ (0) | 2022.07.08 |
import, export (0) | 2022.07.07 |
์ด๋ฏธ์ง ์ฝ์ ํ๋ ๋ฐฉ๋ฒ (0) | 2022.07.07 |
React์ Bootstrap ์ ์ฉ (0) | 2022.07.07 |