1. Installing React Router
npm install react-router-dom
2. Basic Setup
In your index.js file, wrap your app with BrowserRouter:
import React from "react";
import ReactDOM from "react-dom/client";
import { BrowserRouter } from "react-router-dom";
import App from "./App";
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
<BrowserRouter>
<App />
</BrowserRouter>
);
3. Defining Routes in App
Use Routes and Route:
import { Routes, Route, Link } from "react-router-dom";
import Home from "./pages/Home";
import About from "./pages/About";
function App() {
return (
<div>
<nav>
<Link to="/">Home</Link> |{" "}
<Link to="/about">About</Link>
</nav>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</div>
);
}
export default App;
4. Nested Routes Example
Imagine you have a Dashboard with sub-routes.
import { Routes, Route, Link, Outlet } from "react-router-dom";
function Dashboard() {
return (
<div>
<h2>Dashboard</h2>
<nav>
<Link to="profile">Profile</Link> |{" "}
<Link to="settings">Settings</Link>
</nav>
{/* Outlet renders nested route components */}
<Outlet />
</div>
);
}
function Profile() {
return <h3>User Profile</h3>;
}
function Settings() {
return <h3>Account Settings</h3>;
}
function App() {
return (
<Routes>
<Route path="/" element={<h1>Home</h1>} />
<Route path="dashboard" element={<Dashboard />}>
<Route path="profile" element={<Profile />} />
<Route path="settings" element={<Settings />} />
</Route>
</Routes>
);
}
export default App;
🔑 Key Idea:
- Outlet is where nested child routes render.
- You can have as many nested levels as needed.