🔹 1. Why We Need Routing
In HTML, we can create navigation bars using <a> tags, but every time we click a link, the entire page reloads.
This makes navigation slower because each page loads a new HTML file.
In React, navigation happens inside a single HTML file using JavaScript, so the page doesn’t reload.
👉 It gives a smooth and fast user experience.
🔹 2. Example – Navigation in HTML vs React
HTML Example:
<a href="home.html">Home</a>
<a href="contact.html">Contact</a>
âž¡ Each click reloads the page.
React Example (Using React Router):
<Link to="/">Home</Link>
<Link to="/contact">Contact</Link>
➡ No page reload — React updates the view dynamically.
🔹 3. React Router Setup
In React, we use BrowserRouter to define all routes in one place — usually in App.js.
import { BrowserRouter, Routes, Route, Link } from "react-router-dom";
import Home from "./Home";
import Contact from "./Contact";
function App() {
  return (
    <BrowserRouter>
      <nav>
        <Link to="/">Home</Link>
        <Link to="/contact">Contact</Link>
      </nav>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/contact" element={<Contact />} />
      </Routes>
    </BrowserRouter>
  );
}
export default App;
✅ Advantage:
We no longer need to add the navigation bar to each page manually — React Router handles everything in one place.
🔹 4. URL Example (Dynamic Navigation)
When we visit a site like Myntra, the URL changes dynamically:
myntra.com/clothes
myntra.com/clothes/tshirts
myntra.com/clothes/jeans
Even though the URL changes, the page doesn’t reload — React just updates the DOM smoothly.
🔹 5. Nested Routes
Nested routing means creating routes inside another route.
Example: /dashboard/clothes, /dashboard/makeup
We define nested routes inside a parent route, and the nested components render inside the parent using an Outlet.
import { BrowserRouter, Routes, Route, Link, Outlet } from "react-router-dom";
function Dashboard() {
  return (
    <div>
      <h2>Dashboard</h2>
      <nav>
        <Link to="clothes">Clothes</Link>
        <Link to="makeup">Makeup</Link>
      </nav>
      <Outlet /> {/* Nested components will render here */}
    </div>
  );
}
function Clothes() {
  return <h3>Clothes Section</h3>;
}
function Makeup() {
  return <h3>Makeup Section</h3>;
}
function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="dashboard" element={<Dashboard />}>
          <Route path="clothes" element={<Clothes />} />
          <Route path="makeup" element={<Makeup />} />
        </Route>
      </Routes>
    </BrowserRouter>
  );
}
export default App;
✅ Result:
- 
/dashboard→ shows Dashboard - 
/dashboard/clothes→ shows Clothes inside Dashboard - 
/dashboard/makeup→ shows Makeup inside Dashboard 
💡 In Short:
| Concept | HTML | React | 
|---|---|---|
| Navigation | Reloads full page | Updates single page dynamically | 
| Setup | Separate HTML files | One BrowserRouter for all routes | 
| Nested Pages | Not possible | Easy with Outlet
 | 
| Experience | Slow | Fast & smooth | 
    
Top comments (0)