React Router Navigating in React Applications
February 18, 2025When building single-page applications (SPAs), client-side routing is essential to enable smooth navigation without full page reloads. React Router provides an easy and powerful way to handle navigation in React applications.
Why Use React Router?
- Enables Client-Side Routing: No need for full-page refreshes.
- Dynamic Routing: Routes can be defined dynamically based on application state.
- Nested Routes: Allows complex UI structures.
- Programmatic Navigation: Navigate between pages using JavaScript.
Installing React Router
To get started, install React Router using npm or yarn:
npm install react-router-dom
or
yarn add react-router-dom
Setting Up Basic Routes
To define routes, wrap your application with BrowserRouter
and use Routes
and Route
components:
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import Home from './Home';
import About from './About';
function App() {
return (
<Router>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</Router>
);
}
export default App;
Navigating Between Pages
Use the Link
component instead of <a>
tags to navigate between pages:
import { Link } from 'react-router-dom';
function Navbar() {
return (
<nav>
<Link to="/">Home</Link>
<Link to="/about">About</Link>
</nav>
);
}
Dynamic Routing with URL Parameters
You can create dynamic routes using parameters:
import { useParams } from 'react-router-dom';
function UserProfile() {
const { username } = useParams();
return <h1>Welcome, {username}!</h1>;
}
Define the route:
<Route path="/user/:username" element={<UserProfile />} />
Programmatic Navigation
Use the useNavigate
hook to navigate programmatically:
import { useNavigate } from 'react-router-dom';
function Dashboard() {
const navigate = useNavigate();
return (
<button onClick={() => navigate('/home')}>Go to Home</button>
);
}