አንድ React App ውስጥ ብዙ Pages! 🔥
Navigate between pages without reload — Single Page Application (SPA)!
React Router — React App ውስጥ ብዙ Pages (Routes) ለማስሮጥ ይጠቅማል። Page reload ሳይሆን URL ይቀያየራል — SPA (Single Page Application)!
React Router lets you build multi-page apps without full page reloads — the URL changes but only the content updates!
Install: npm install react-router-dom
— ከ npm ያወርዳል / Download from npm
After installing, import BrowserRouter, Routes, Route, Link from react-router-dom.
🌐 URL ሲቀያየር Page ይቀያየራል:
import { BrowserRouter, // ሁሉም ይጠቀልላል Routes, // Routes ሳጥን Route, // አንድ route Link, // <a> tag ምትክ NavLink, // active class ያለው Link useNavigate, // JS ተጠቅሞ navigate useParams, // URL parameters ለማንበብ } from 'react-router-dom'; import Home from './pages/Home'; import About from './pages/About'; import Lessons from './pages/Lessons'; import NotFound from './pages/NotFound'; function App() { return ( <BrowserRouter> <Navbar /> {/* ሁሌ ይታያል */} <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> <Route path="/lessons" element={<Lessons />} /> <Route path="/lesson/:id" element={<Lesson />} /> <Route path="*" element={<NotFound />} /> </Routes> </BrowserRouter> ); }
📋 Routes ሠንጠረዥ:
| PATH | COMPONENT | ገፁ |
|---|---|---|
| / | <Home /> | ዋና ገፅ / Home page |
| /about | <About /> | ስለ እኛ / About page |
| /lessons | <Lessons /> | ትምህርቶች ዝርዝር |
| /lesson/:id | <Lesson /> | Dynamic — :id ቀያይር |
| * | <NotFound /> | 404 — ያልተገኘ ገፅ |
Link = <a> tag ምትክ — page reload ሳይሆን navigate ያደርጋል! NavLink = active class ጨምሮ!
Never use <a href> in React Router — use <Link> to avoid full page reloads!
function Navbar() { return ( <nav> {/* Link — ቀለል ያለ navigation */} <Link to="/">Home</Link> <Link to="/about">About</Link> {/* NavLink — active ሲሆን class ይጨምራል */} <NavLink to="/lessons" className={({ isActive }) => isActive ? 'active' : '' } > Lessons </NavLink> </nav> ); } // useNavigate — JS ተጠቅሞ navigate function LoginPage() { const navigate = useNavigate(); function handleLogin() { // login logic... navigate('/'); // Home ሂድ } }
useParams — URL ውስጥ ያለ dynamic value ለማንበብ! /lesson/:id → id ን ያነባል!
useParams reads dynamic segments from the URL — like /lesson/5 gives you id = "5"!
function Lesson() { // URL /lesson/5 ከሆነ → id = "5" const { id } = useParams(); const lessons = [ { id: '1', title: 'HTML Basics' }, { id: '2', title: 'CSS Flexbox' }, { id: '3', title: 'JavaScript' }, ]; const lesson = lessons.find(l => l.id === id); if (!lesson) return <p>ትምህርት አልተገኘም!</p>; return ( <div> <h1>ክፍል {id}: {lesson.title}</h1> <Link to="/lessons">← ሁሉም ትምህርቶች</Link> </div> ); }
🎮 Demo — useParams: ትምህርት ምረጥ → URL ይቀያየራል!
Click a lesson — see how useParams would read the :id from the URL!
Browser ውስጥ React Router ስሜት! Nav links ጠቅ አድርግ — ገፅ ይቀያየራል!
Simulate React Router navigation — click links to switch pages!
App.jsx ውስጥ <BrowserRouter> ሁሉን ይጠቀልለዋል። አንድ ጊዜ ብቻ!
Wrap your entire app in BrowserRouter — only once!
<Route path="/about" element={<About />} /> — path ና Component አብሮ ይፃፋሉ!
Each Route maps a URL path to a component.
<Link to="/about"> ተጠቀም — <a href> አትጠቀም! Page reload ይሆናል!
Always use Link instead of <a> to prevent full page reloads.
/lesson/:id → const {'{'}id{'}'} = useParams() — URL ውስጥ ያለ value ለማንበብ!
useParams reads dynamic URL segments like :id, :slug, :username.
const navigate = useNavigate() → navigate('/home') — login ወይም form submit በኋላ ለማስሄድ!
useNavigate lets you redirect programmatically from event handlers.