#React Router is one of the most popular libraries for handling navigation in React applications. It enables developers to build single-page applications (SPAs) with dynamic routing, creating a seamless and responsive user experience. In this guide, we'll explore the fundamentals of React Router and how to use it to build navigation in your React app.
What is React Router?
React Router is a library that allows you to manage navigation and routing in React applications
Why Use React Router?
1. Dynamic Navigation:
Enables smooth transitions between views without reloading the page.
2. Declarative Routing:
Routes are defined using JSX, making them easy to read and manage.
3. Nested Routes:
Allows for complex routing hierarchies.
4. Supports URL Parameters:
Enables dynamic content rendering based on the URL.
Getting Started with React Router
Installation
To use React Router, install the library via npm or yarn:
npm install react-router-dom
or
yarn add react-router-dom
Basic Setup
Here’s how to set up React Router in a simple React application:
import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
function Home() {
return <h2>Home Page</h2>;
}
function About() {
return <h2>About Page</h2>;
}
function App() {
return (
<Router>
<nav>
<a href="/">Home</a>
<a href="/about">About</a>
</nav>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</Router>
);
}
export default App;
- BrowserRouter : Wraps the application and provides routing functionality.
- Routes : A container for defining multiple routes.
- Route : Defines a path and its associated component
Key Features of React Router
1. Dynamic Routes
React Router supports dynamic routes using URL parameters.
import React from 'react';
import { BrowserRouter as Router, Routes, Route, useParams } from 'react-router-dom';
function User() {
const { id } = useParams(); // Access the dynamic URL parameter
return <h2>User ID: {id}</h2>;
}
function App() {
return (
<Router>
<Routes>
<Route path="/user/:id" element={<User />} />
</Routes>
</Router>
);
}
export default App;
2. Navigation Links
Use Link
or NavLink
components instead of <a>
tags for better performance.
import { Link } from 'react-router-dom';
function Navbar() {
return (
<nav>
<Link to="/">Home</Link>
<Link to="/about">About</Link>
</nav>
);
}
- Link : Prevents full page reloads, making navigation faster.
- NavLink : Provides active styles for the currently active route.
3. Lazy Loading
Optimize performance by lazy loading components.
import React, { lazy, Suspense } from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
const Home = lazy(() => import('./Home'));
const About = lazy(() => import('./About'));
function App() {
return (
<Router>
<Suspense fallback={<div>Loading...</div>}>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</Suspense>
</Router>
);
}
export default App;
Conclusion
React Router simplifies navigation in React applications by providing a declarative and dynamic way to manage routes. Whether you’re building simple SPAs or complex nested applications, mastering React Router will significantly enhance your development skills.
Top comments (2)
Just curious to know why you written about this old instead of Moder React Router,
Also well described each and every concepts
dev.to/hanzla-baig/winterland-a-be...