DEV Community

Cover image for Understanding React Router: A Step-by-Step Guide for Beginners
Sharanappa
Sharanappa

Posted on

Understanding React Router: A Step-by-Step Guide for Beginners

#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;
Enter fullscreen mode Exit fullscreen mode
  • 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;
Enter fullscreen mode Exit fullscreen mode
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>
  );
}
Enter fullscreen mode Exit fullscreen mode
  • 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;
Enter fullscreen mode Exit fullscreen mode

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 (4)

Collapse
 
wizard798 profile image
Wizard • Edited

Just curious to know why you written about this old instead of Modern React Router,
Also well described each and every concepts

Collapse
 
sharanappa_m profile image
Sharanappa

Thank you for your feedback!
I intentionally focused on the foundational concepts of React Router because they provide a strong starting point for beginners.
While the modern React Router introduces advanced features, understanding the basics first helps new developers build confidence before diving into more complex updates...

Collapse
 
wizard798 profile image
Wizard

Nice 🎊, yeah you're right

Collapse
 
prodevstaff profile image
ProDev. Staff