HashRouter in React

As a React developer, I have often used HashRouter to handle client-side routing in my web applications. It is one of the two types of routers that React Router provides, the other being BrowserRouter. HashRouter is used to handle routing in single-page applications (SPAs) where all the content is loaded on a single page and the URL changes dynamically without a full page reload.

How HashRouter works

The HashRouter uses the hash portion of the URL (the part after the # symbol) to keep track of the current route. When a user clicks on a link, the HashRouter updates the hash portion of the URL corresponding to the new route, without actually requesting a new page from the server. The browser then sends an event indicating that the URL has changed, and the HashRouter renders the appropriate component for the new route.


To use HashRouter in a React application, first, we need to import it from React Router:

import { HashRouter } from 'react-router-dom';

Then we need to wrap our entire application with HashRouter:

  <App />

Here, App is the root component of our application. Now we can use Route components to define our routes and their corresponding components. Each Route component takes two props:

  • path: The URL path that this route should match.
  • component: The component to render when this route is matched.

For example, if we want to define a route for the home page of our application, we can use the following Route component:

<Route path="/" component={HomePage} />

Here, '/' is the path for the home page, and HomePage is the component that should be rendered when this route is matched.

Multiple Ways to Use HashRouter

We can also use HashRouter in various ways to handle routing in different scenarios. Here are some examples:

  • Using NavLink Component: We can use NavLink components to create navigation links for our routes. NavLink is similar to Link but applies an active class to the link when its corresponding route is active.
  • Using Switch Component: We can use the Switch component to render only the first matching Route component. This is useful when we have multiple routes that match the same path.
  • Using Redirect Component: We can use the Redirect component to redirect the user to a different route based on a condition. For example, we can redirect the user to a login page if they are not authenticated.

In conclusion, HashRouter is a powerful tool for handling client-side routing in single-page applications. It allows us to create dynamic and responsive web applications that provide a seamless user experience. By using HashRouter and React Router, we can easily define our routes and components, and handle navigation with ease.

Subscribe to The Poor Coder | Algorithm Solutions

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
[email protected]