๋ฐ์ํ
Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- serverless
- Pandas
- Android
- ์๋ฐ
- ์๋ฐ์ด๋ณด
- ์๋ฐ๊ธฐ์ด
- streamlit
- ์คํธ๋ฆผ๋ฆฟ ๊ธฐ๋ณธ
- java
- Streamlit๊ธฐ์ด
- MySQL
- JavaScript
- ์๋ฐ๊ณต๋ถ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์๋ฐ์คํฌ๋ฆฝํธ ๊ณต๋ถ
- ํ๋ค์ค
- ์๋ฐํ๋ก๊ทธ๋๋ฐ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์น๋์๋ณด๋ ์ ์
- ์คํธ๋ฆผ๋ฆฟ
- RESTful API
- Streamlit๊ธฐ๋ณธ
- ํ์ด์ฌ๊ณต๋ถ
- Flutter
- ํ๋ค์ค๊ณต๋ถ
- ์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ
- ์น๋์๋ณด๋ ๊ธฐ์ด
- ์๋๋ก์ด๋ ์คํ๋์ค
- db
- ํ์ด์ฌ
Archives
- Today
- Total
ruriruriya
[React] ๋ฆฌ์กํธ - React์์ ๋ค๋น๊ฒ์ด์ ๋ฐ ๋ง๋ค๊ธฐ(react-router ๋ผ์ด๋ธ๋ฌ๋ฆฌ) ๋ณธ๋ฌธ
๐๏ธWeb/React
[React] ๋ฆฌ์กํธ - React์์ ๋ค๋น๊ฒ์ด์ ๋ฐ ๋ง๋ค๊ธฐ(react-router ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
๋ฃจ๋ฆฌ์ผใ 2024. 5. 7. 22:47๋ฐ์ํ
react์์๋ ๋ค๋น๊ฒ์ด์
๋ฐ๋ฅผ ์ด๋ป๊ฒ ๋ง๋ค๊น?
react-router ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ชจ๋ํ ์ํค๊ณ ๊ฐํธํ๊ฒ ๋ผ์ฐํ
์ค์ ์ ํ ์ ์๋ค.
react-router ์ฃผ์ ๊ธฐ๋ฅ
- ๋์ ๋ผ์ฐํ ( Dynamic Routing) : ์ฌ์ฉ์๊ฐ ํน์ URL์ ์ ๊ทผํ ๋ ํด๋น URL์ ํ์ํ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋ง
- ๋ผ์ฐํธ ๊ฐ๋(Route Guards) : ์ฌ์ฉ์ ์ธ์ฆ ์ํ ๋ฑ์ ๋ฐ๋ผ ํน์ ๋ผ์ฐํธ๋ฅผ ์ ํํ ์ ์์.
- ๋ ์ด์์ ๊ด๋ฆฌ : 'Outlet'๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ํตํด ํ์ด์ง ๋ ์ด์์์ ์ฝ๊ฒ ๊ด๋ฆฌ
- ๋ฐ์ดํฐ ๋ก๋ฉ ์ ๋ต : ๋ก๋ฉ๊ณผ ํ์นญ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํ 'Loader' ๊ธฐ๋ฅ์ด ์ ๊ณต
- ์ฝ๋ ์คํ๋ฆฌํ (Code Splitting) : 'React.lazy'์ 'Suspense'๋ฅผ ์ด์ฉํ์ฌ ํ์ํ ๋ผ์ฐํธ๋ง ๋ก๋ํ๊ณ , ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋ํ ๋ ํ์ํ ๋ฒ๋ค์ ๋ก๋ํด์ ํจ์จ์ ์ธ ํ์ด์ง ๋ก๋ฉ์ ๋๋ชจ
react-router ์์
- ๋ค๋น๊ฒ์ด์ ๋ฐ(Navigation Bar): Link ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ๊ฒฝ๋ก๋ก์ ๋งํฌ๋ฅผ ์ ๊ณตํ๋ค. ์ด ๋งํฌ๋ค์ ์ฌ์ฉ์๊ฐ ํด๋ฆญํ๋ฉด ํด๋น ๊ฒฝ๋ก์ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋๋ก ์ค์ ๋๋ค.
- Routes์ Route: ๊ฐ Route๋ ํน์ ๊ฒฝ๋ก์ ๋์ํ๋ ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ๋ค. Routes ์ปดํฌ๋ํธ๋ ์ด๋ฌํ Route ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ธ๋ฉฐ, URL์ ๋ฐ๋ผ ์ ์ ํ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋๋ก ๋์์ค๋ค.
- ๋ณดํธ๋ ๋ผ์ฐํธ(Protected Route): ProtectedRoute ์ปดํฌ๋ํธ๋ ํน์ ์กฐ๊ฑด(์: ์ฌ์ฉ์ ์ธ์ฆ)์ด ์ถฉ์กฑ๋ ๋๋ง ์ปดํฌ๋ํธ์ ์ ๊ทผ์ ํ์ฉํ๋ค. ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์ง ์์ ๊ฒฝ์ฐ ๋ค๋ฅธ ํ์ด์ง๋ก ๋ฆฌ๋๋ ์ ํ ์ ์๋ค.
// App.js
import React from 'react';
import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';
import HomePage from './HomePage';
import AboutPage from './AboutPage';
import DashboardPage from './DashboardPage';
import ProtectedRoute from './ProtectedRoute';
function App() {
return (
<Router>
<div>
{/* ๋ค๋น๊ฒ์ด์
๋ฐ */}
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
<li>
<Link to="/dashboard">Dashboard</Link>
</li>
</ul>
</nav>
{/* ๋ผ์ฐํธ ์ค์ */}
<Routes>
<Route path="/" element={<HomePage />} />
<Route path="/about" element={<AboutPage />} />
<Route path="/dashboard" element={<ProtectedRoute><DashboardPage /></ProtectedRoute>} />
</Routes>
</div>
</Router>
);
}
export default App;
๋ฐ์ํ
'๐๏ธWeb > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] ๋ฆฌ์กํธ - React Router๋ฅผ ์ฌ์ฉํ์ฌ ํค๋ ํธํฐ ๊ณ ์ ํ๊ธฐ(BrowserRouter, Routes, Route) (1) | 2024.05.20 |
---|---|
[React] ๋ฆฌ์กํธ - props ์ฌ์ฉ ๋ฐฉ๋ฒ (0) | 2024.04.29 |
[React] ๋ฆฌ์กํธ - ํจ์ ์ปดํฌ๋ํธ ์ ์์ ์ฌ์ฉ (0) | 2024.04.27 |
[React] ๋ฆฌ์กํธ - ๋น๋ ๋ฐ ๋ฐฐํฌ (0) | 2024.04.27 |
[React] ๋ฆฌ์กํธ - React๊ธฐ๋ณธ ๊ตฌ์กฐ ๋ฐ ํ์ผ ์ญํ (0) | 2024.04.27 |