Nested Routes in React Explained
๐ฆ Setting Up React Router (v6)
React Router v6 introduced a more declarative and simplified API. It's lighter and faster than v5 and supports features like route nesting and layout routes out of the box.
✅ 1. Install React Router DOM
In your React project directory, run:
bash
Copy
Edit
npm install react-router-dom@6
Or using Yarn:
bash
Copy
Edit
yarn add react-router-dom@6
๐งฑ 2. Basic Project Structure
css
Copy
Edit
src/
├── App.js
├── index.js
├── pages/
│ ├── Home.js
│ ├── About.js
│ ├── Contact.js
└── routes/
└── AppRoutes.js
๐งฉ 3. Define Pages (Components)
pages/Home.js
jsx
Copy
Edit
function Home() {
return <h1>Home Page</h1>;
}
export default Home;
Repeat for About.js and Contact.js.
๐ 4. Set Up Routing
AppRoutes.js
jsx
Copy
Edit
import { Routes, Route } from 'react-router-dom';
import Home from '../pages/Home';
import About from '../pages/About';
import Contact from '../pages/Contact';
const AppRoutes = () => {
return (
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
<Route path="/contact" element={<Contact />} />
</Routes>
);
};
export default AppRoutes;
App.js
jsx
Copy
Edit
import { BrowserRouter } from 'react-router-dom';
import AppRoutes from './routes/AppRoutes';
function App() {
return (
<BrowserRouter>
<AppRoutes />
</BrowserRouter>
);
}
export default App;
๐ 5. Add Navigation
Example Navigation Bar:
jsx
Copy
Edit
import { Link } from 'react-router-dom';
function Navbar() {
return (
<nav>
<Link to="/">Home</Link> |{" "}
<Link to="/about">About</Link> |{" "}
<Link to="/contact">Contact</Link>
</nav>
);
}
export default Navbar;
Add <Navbar /> inside your App.js or a layout component.
๐ฒ 6. Nested Routes Example
You can nest routes using layout components.
Example Structure:
jsx
Copy
Edit
<Routes>
<Route path="/" element={<Layout />}>
<Route index element={<Home />} />
<Route path="about" element={<About />} />
<Route path="contact" element={<Contact />} />
</Route>
</Routes>
Layout Component (Layout.js)
jsx
Copy
Edit
import { Outlet, Link } from 'react-router-dom';
const Layout = () => {
return (
<div>
<nav>
<Link to="/">Home</Link> |{" "}
<Link to="/about">About</Link> |{" "}
<Link to="/contact">Contact</Link>
</nav>
<hr />
<Outlet />
</div>
);
};
export default Layout;
❓ 7. Handling 404s (Not Found)
Add a catch-all route at the end:
jsx
Copy
Edit
<Route path="*" element={<h2>Page Not Found</h2>} />
⚙️ Bonus: Programmatic Navigation
Use the useNavigate hook:
jsx
Copy
Edit
import { useNavigate } from 'react-router-dom';
const Button = () => {
const navigate = useNavigate();
return (
<button onClick={() => navigate('/about')}>
Go to About
</button>
);
};
๐ง Summary
Feature React Router v6 Syntax
Routing setup <Routes>, <Route path="" element={...} />
Nesting Use <Outlet /> in layout components
Navigation <Link to="/path">, useNavigate()
Catch-all route <Route path="*" element={<NotFound />} />
Learn React JS Course in Hyderabad
Read More
๐ React Router & Navigation
Best Practices for Managing Forms in React
Integrating React with Yup for Validation
Visit Our Quality Thought Training in Hyderabad
Comments
Post a Comment