Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • React Tutorial
  • React Exercise
  • React Basic Concepts
  • React Components
  • React Props
  • React Hooks
  • React Router
  • React Advanced
  • React Examples
  • React Interview Questions
  • React Projects
  • Next.js Tutorial
  • React Bootstrap
  • React Material UI
  • React Ant Design
  • React Desktop
  • React Rebass
  • React Blueprint
  • JavaScript
  • Web Technology
Open In App
Next Article:
React-Router Hooks
Next article icon

What is react-router-dom ?

Last Updated : 27 Feb, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

React Router DOM is an npm package that enables you to implement dynamic routing in a web app. It allows you to display pages and allow users to navigate them. It is a fully-featured client and server-side routing library for React. 

React Router Dom is used to build single-page applications i.e. applications that have many pages or components but the page is never refreshed instead the content is dynamically fetched based on the URL. This process is called Routing and it is made possible with the help of React Router Dom.

Why Use React Router DOM?

React Router DOM helps React apps navigate between pages without reloading. It makes switching pages easy and organizes the app with clear routes. Here are some benefits of using React Router Dom :

  • Enables Navigation Without Page Reloads: React Router DOM allows users to switch between different pages smoothly without refreshing the entire web page.
  • Dynamic Routing: Dynamic routes support parameters, where the content can be customized by the input from the user.
  • URL-Based Component Rendering: Each page in the app is linked to a specific URL. When the user accesses some given URL, the relevant component is loaded by React Router DOM, and this is easily handled and arranged for various views.
  • Nested Routes: This allows for the definition of routes inside routes, thus complex layouts can easily be achieved.

Components of React Router DOM

These components help in defining routes, handling navigation, and managing dynamic content within a React application.

BrowserRouter (<BrowserRouter>)

  • BrowserRouter Enables routing in a React application by wrapping the entire app.
  • It listens to changes in the URL and renders the correct components accordingly.
JavaScript
import { BrowserRouter } from "react-router-dom"; <BrowserRouter>     <App /> </BrowserRouter>; 

Routes (<Routes>)

  • Routes acts as a container for all <Route> components.
  • Ensures that only one matching route is rendered at a time.
JavaScript
<Routes>   <Route path="/" element={<Home />} />   <Route path="/about" element={<About />} /> </Routes>; 

Route (<Route>)

  • Route defines a specific path and maps it to a React component.
  • When the URL matches the route path, the respective component is displayed.
JavaScript
<Route path="/contact" element={<Contact />} /> 

Link (<Link>)

  • Used to navigate between pages without refreshing the page.
  • Unlike <a>, it prevents full-page reloads and enhances performance.
JavaScript
<Link to="/about">About Us</Link> 

NavLink (<NavLink>)

  • Works like <Link> but provides active styling when the route is active.
  • Useful for highlighting the active page in navigation menus.
JavaScript
<NavLink to="/home" className="nav-link">Home</NavLink> 

useParams (useParams())

  • useParams extracts dynamic parameters from the URL.
  • Helps in fetching user-specific or product-specific details based on the route.
JavaScript
import { useParams } from "react-router-dom"; function UserProfile() {     let { id } = useParams();     return <h1>User ID: {id}</h1>; } 

useNavigate (useNavigate())

  • useNavigate Allows programmatic navigation between routes.
  • Useful for redirecting users after an action, such as form submission.
JavaScript
import { useNavigate } from "react-router-dom"; function Home() {     const navigate = useNavigate();     return <button onClick={() => navigate("/about")}>Go to About</button>; } 

How React Router DOM Works

React Router DOM allows for the transition through the entirety of the React application by setting multiple routes and page transitions without page reloading. This is the overall structure for how this is achieved:

Setting Up the Router: The entire app is wrapped around <BrowserRouter>, which allows for routing throughout the application.

JavaScript
import { BrowserRouter } from "react-router-dom";  function App() {     return (         <BrowserRouter>             <Routes>{/* Define your routes here */}</Routes>         </BrowserRouter>     ); } 

Defining Routes: Multiple pages or components are assigned provided paths using <Routes> and <Route>, where the right content is displayed when you visit the URL.

JavaScript
<Routes>     <Route path="/" element={<Home />} />     <Route path="/about" element={<About />} /> </Routes>; 

Navigating Between Pages: Instead of the traditional <a> tag, React incorporates the use of <Link> or <NavLink> for navigating, providing for non-page refresh transitions.

JavaScript
import { Link } from "react-router-dom";  function Navbar() {     return (         <nav>             <Link to="/">Home</Link>             <Link to="/about">About</Link>         </nav>     ); } 

Rendering Components Dynamically: When a user visits a specific URL, React Router checks for a matching route and displays the assigned component.

JavaScript
function Home() {     return <h1>Welcome to Home Page</h1>; }  function About() {     return <h1>About Us</h1>; } 

Using Nested Routes: Routes can be structured inside other routes, making it easier to manage layouts for complex apps.

JavaScript
<Routes>     <Route path="/dashboard" element={<Dashboard />}>         <Route path="settings" element={<Settings />} />         <Route path="profile" element={<Profile />} />     </Route> </Routes>; 

Handling Dynamic Routes: Some routes accept parameters, allowing content to change based on user input. The useParams hook retrieves these values.

<Route path="/user/:id" element={<UserProfile />} />

Steps to Implement React-router-dom

To implement React Router DOM for navigation in a React application. Follow these steps:

Step 1: Install React Router DOM

Before using React Router DOM, install it in your project using:

npm install react-router-dom

Updated dependencies:

"dependencies": {     "react": "^18.2.0",     "react-dom": "^18.2.0",     "react-router-dom": "^6.22.3",     "react-scripts": "5.0.1"
}

Step 2: Import Required Components

Import the necessary components inside App.js:

JavaScript
import React from "react"; import { BrowserRouter as Router, Routes, Route, Link } from "react-router-dom"; import "./App.css"; 

Step 3: Create Components for Different Pages

Define components that represent different pages:

JavaScript
const Home = () => <h1>GeeksforGeeks</h1>; const About = () => <h1>Geeks Learning</h1>; const Contact = () => <h1>Geeks Contact page</h1>; 

Step 4: Set Up Router and Define Routes

Wrap your app with <Router> and use <Routes> to define different paths:

JavaScript
function App() {     return (         <Router>             <nav className="navbar">                 <ul className="nav-list">                     <li className="nav-item">                         <Link to="/">Home</Link>                     </li>                     <li className="nav-item">                         <Link to="/about">About</Link>                     </li>                     <li className="nav-item">                         <Link to="/contact">Contact</Link>                     </li>                 </ul>             </nav>              <div className="content">                 <Routes>                     <Route path="/" element={<Home />} />                     <Route path="/about" element={<About />} />                     <Route path="/contact" element={<Contact />} />                 </Routes>             </div>         </Router>     ); }  export default App; 

Step 5: Navigation Using <Link>

Use <Link> instead of <a> to enable navigation without refreshing:

JavaScript
<Link to="/">Home</Link> <Link to="/about">About</Link> <Link to="/contact">Contact</Link> 

Output

router-dom-dupli

In this code

  • App.js: This is the core file where routing is set up using <BrowserRouter>. It defines routes using <Routes> and <Route> and includes navigation links with <Link>.
  • Home.js: A simple React component that renders a heading (GeeksforGeeks). It is displayed when the user visits /.
  • About.js: Displays “Geeks Learning” and is rendered when the user navigates to /about.
  • Contact.js: Shows “Geeks Contact Page” when the user visits /contact.

Conclusion

React Router DOM makes it easy to switch between pages in a React app without reloading. It helps keep the app organized by using features like dynamic routing and nested routes. With simple navigation components, React apps can manage multiple views smoothly, making it a valuable tool for any project.



Next Article
React-Router Hooks

S

salehmubashar
Improve
Article Tags :
  • ReactJS
  • Web Technologies
  • React-Questions
  • ReactJS DOM Elements

Similar Reads

  • What is React Router?
    React Router is like a traffic controller for your React application. Just like how a traffic controller directs vehicles on roads, React Router directs users to different parts of your app based on the URL they visit. So, when you click on a link or type a URL in your browser, React Router decides
    2 min read
  • NPM React Router Dom
    React Router DOM is a powerful routing library for React applications that enables navigation and URL routing. In this article, we'll explore React Router DOM in-depth, covering its installation, basic usage, advanced features, and best practices. What is React Router DOM?React Router DOM is a colle
    2 min read
  • react-router-dom - NPM
    "react-router-dom" is an important library for handling routing in React applications. It allows you to navigate between different components and manage the browser history. Here, we covers everything you need to know about react-router-dom, from installation using npm to implementing routes in a Re
    4 min read
  • React-Router Hooks
    React-Router is a popular React library that is heavily used for client-side routing and offers single-page routing. It provides various Component APIs( like Route, Link, Switch, etc.) that you can use in your React application to render different components based on the URL pathnames on a single pa
    11 min read
  • What is NativeRouter in React Router?
    NativeRouter is a routing solution provided by React Router that is specifically designed for React Native applications. It allows developers to implement routing functionality using a declarative API similar to that of React Router DOM, but tailored for mobile environments. This article explores in
    2 min read
  • What is React?
    React JS is a free library for making websites look and feel cool. It's like a special helper for JavaScript. People from Facebook and other communities work together to keep it awesome and up-to-date. React is Developed by Facebook, React is a powerful JavaScript library used for building user inte
    6 min read
  • Why does React use JSX?
    React uses JSX (JavaScript XML) as a syntax extension for JavaScript. JSX is a syntax extension that looks similar to XML or HTML but is designed to work seamlessly with JavaScript. Reasons why React uses JSX:Readability and Expressiveness: JSX provides a more concise and readable syntax for definin
    2 min read
  • What is StaticHandler in React Router
    React Router is a popular library in the React ecosystem that enables routing in single-page applications (SPAs). It allows developers to define navigation and rendering rules based on the URL of the application. One of the essential components of React Router is the StaticHandler, which plays a cru
    5 min read
  • React Router vs. React Router DOM
    Routing is a fundamental part of any web application. It allows users to move between pages or views. smoothly in traditional web development Routing involves mapping URLs to specific content or views on the server. These are the following topics that we are going to discuss: Table of Content What i
    4 min read
  • Routes Component in React Router
    Routes are an integral part of React Router, facilitating the navigation and rendering of components based on URL patterns. In this article, we'll delve into the concept of routes, understanding their role in React Router, and how to define and manage routes effectively. Table of Content What are Ro
    4 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences