React Router Dom | asadmukhtar.info
Step-by-Step Guide to Setting Up Authentication in Laravel 12 with Breeze   |   Manual Authentication in Laravel 12: Step-by-Step Guide   |   How to Build a REST API in Laravel 12 with Sanctum   |   Laravel 12 CRUD Application with Image Upload   |   Laravel 12 Multi-Auth System: Admin & User Login   |   How to Integrate Stripe Payment Gateway in Laravel 12   |   Building a Role-Based Access Control (RBAC) in Laravel 12   |   How to Use Laravel 12 Queues and Jobs for Background Tasks   |   Laravel 12 Livewire CRUD Example with Validation   |   Email Verification and Password Reset in Laravel 12   |   How to Use Laravel 12 API with Vue.js 3   |   Laravel 12 AJAX CRUD with jQuery and Bootstrap   |   Laravel 12 Multi-Language Website Setup   |   React Best Practices for 2025: Performance, SEO, and Scalability   |   How to Build a Full-Stack MERN App: A Step-by-Step Guide   |   React State Management: Redux vs. Context API vs. Recoil   |   Server-Side Rendering (SSR) in React with Next.js for SEO   |   How to Optimize React Apps for Faster Load Times   |   Building a REST API with Node.js and Express for a React App   |   Integrating JWT Authentication in React and Node.js (MERN Stack)   |   Real-time Chat App with React, Node.js, and Socket.io   |   How to Deploy a MERN Stack Application on AWS or Vercel   |   Connecting React Frontend to a Node.js Backend with Axios   |   Laravel Implement Flash Messages Example   |   How to integrate Angular 19 with Node.js and Express for full-stack development   |   Best practices for connecting Angular 19 frontend with Laravel API   |   Step-by-step guide to upgrading an existing project to Angular 19   |   How to implement authentication in Angular 19 using JWT and Firebase   |   Optimizing server-side rendering in Angular 19 with route-level render modes   |   Using Angular 19 signals for state management in large applications   |   How to create standalone components in Angular 19 for modular architecture   |   Building a CRUD application in Angular 19 with MongoDB and Express   |   Implementing lazy loading in Angular 19 to improve performance   |   How to integrate Angular 19 with GraphQL for efficient data fetching   |   Vue 3 Composition API vs Options API: A Comprehensive Comparison   |   Fetching and Displaying Data from APIs in Vue.js with Axios   |   Building a Todo App in Vue.js with Local Storage Integration   |   Handling Forms and Validation in Vue.js Using VeeValidate   |   State Management in Vue.js Applications Using Vuex   |   10 Most Important Tasks Every MERN Stack Developer Should Master   |   How to Build a Full-Stack CRUD App with MERN Stack   |   Best Practices for Authentication & Authorization in MERN Stack   |   1. MEAN Stack vs. MERN Stack: Which One Should You Choose in 2025   |   Top 10 Node.js Best Practices for Scalable and Secure Applications   |   How to Build a REST API with Laravel and Node.js (Step-by-Step Guide)   |   Mastering Angular and Express.js for Full-Stack Web Development   |   Top 10 Daily Tasks Every Frontend Developer Should Practice   |   Essential Backend Development Tasks to Boost Your Coding Skills   |   Real-World Mini Projects for Practicing React.js Daily   |   Laravel Developer Task List: Beginner to Advanced Challenges   |   How to Assign Effective Tasks to Your Intern Developers   |   10 Must-Try Tasks to Master JavaScript Fundamentals   |   Practical CSS Challenges That Improve Your UI Design Skills   |   Top Tasks to Learn API Integration in React and Angular   |   Best Task Ideas for a 30-Day Web Development Challenge   |   Top Git and GitHub Tasks Every Developer Should Know   |   30-Day Task Plan for Web Development Interns   |   Weekly Task Schedule for Junior Developers in a Startup   |   How to Track Progress with Development Tasks for Interns   |   What Tasks Should You Give to Interns in a MERN Stack Project   |   Build These 5 Projects to Master React Routing   |   Task-Based Learning: Become a Full-Stack Developer in 90 Days   |   Daily Coding Tasks That Will Sharpen Your Logical Thinking   |   Top 7 Backend Task Ideas to Practice With Node.js and MongoDB   |  

1. What is React Router DOM?

  • React Router DOM is a third-party library for adding routing in React apps.
  • It allows navigation between different pages (views) without refreshing the browser.
  • It helps create dynamic and user-friendly web applications.

Installation Command:

npm install react-router-dom

2. Setting Up React Router

Step 1: Import Required Modules

  • The main components used in React Router DOM are:
    • <BrowserRouter> – Wraps the application to enable routing.
    • <Routes> – Contains all route definitions.
    • <Route> – Defines each page’s path and component.
    • <Link> – Used for navigation instead of <a> tags.

📌 Example: Basic Routing Setup (App.js)

import React from "react";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import Home from "./Home";
import About from "./About";

function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
      </Routes>
    </BrowserRouter>
  );
}

export default App;

3. Creating Pages (Components for Routing)

Now, create separate components for each route.

📌 Example: Home.js

import React from "react";

function Home() {
  return <h2>Welcome to the Home Page</h2>;
}

export default Home;

📌 Example: About.js

import React from "react";

function About() {
  return <h2>About Us Page</h2>;
}

export default About;

4. Navigating Between Pages with <Link>

Instead of using traditional <a> tags, React Router provides the <Link> component for smooth navigation.

📌 Example: Adding Navigation in App.js

import React from "react";
import { BrowserRouter, Routes, Route, Link } from "react-router-dom";
import Home from "./Home";
import About from "./About";

function App() {
  return (
    <BrowserRouter>
      <nav>
        <Link to="/">Home</Link> | <Link to="/about">About</Link>
      </nav>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
      </Routes>
    </BrowserRouter>
  );
}

export default App;

5. Using Dynamic Routes (Route Parameters)

Sometimes, we need to pass dynamic values in the URL, like a product ID or username.

📌 Example: User.js Component (Dynamic Route)

import React from "react";
import { useParams } from "react-router-dom";

function User() {
  const { username } = useParams();
  return <h2>Welcome, {username}!</h2>;
}

export default User;

Updating App.js to Handle Dynamic Routes

import User from "./User";

<Routes>
  <Route path="/user/:username" element={<User />} />
</Routes>

Testing the Dynamic Route:

  • Open http://localhost:3000/user/Zia
  • Output: Welcome, Zia!

6. Handling 404 Pages (Not Found Page)

A 404 page is shown when a user visits an invalid URL.

📌 Example: NotFound.js Component

import React from "react";

function NotFound() {
  return <h2>404 - Page Not Found</h2>;
}

export default NotFound;

Adding a 404 Page in App.js

import NotFound from "./NotFound";

<Routes>
  <Route path="*" element={<NotFound />} />
</Routes>

7. Redirecting Users (Navigate Component)

If you need to redirect users from one page to another, use <Navigate>.

📌 Example: Redirect from Old Page to New Page

import { Navigate } from "react-router-dom";

function OldPage() {
  return <Navigate to="/newpage" />;
}

8. Protected Routes (Authentication-Based Routing)

In real-world apps, some pages should only be accessible to logged-in users.

📌 Example: Protected Route Setup

import { Navigate } from "react-router-dom";

function ProtectedRoute({ isLoggedIn, children }) {
  return isLoggedIn ? children : <Navigate to="/" />;
}

Using the Protected Route in App.js

<Routes>
  <Route
    path="/dashboard"
    element={<ProtectedRoute isLoggedIn={false}><Dashboard /></ProtectedRoute>}
  />
</Routes>

9. Conclusion

  • React Router DOM enables navigation in React apps without reloading the page.
  • It supports dynamic routes, protected routes, and redirects.
  • Use <BrowserRouter>, <Routes>, <Route>, and <Link> for navigation.

Mastering React Router DOM helps in creating professional, dynamic, and user-friendly applications! 🚀