Dynamically Update React Page Titles on Routing using React Helmet

In this React tutorial, we will discuss how to handle document head section content like titles, and descriptions dynamically by using a powerful library React Helmet.

With single-page applications like React, we face the challenge of dynamically controlling the document heads which also plays a key role in making its space in search results. As most of the required meta tags like Title, Description, and Keywords need to be dynamically handled based on the page.

We have already discussed how we can dynamically add Open Graph and Twitter Card tags in React app using React Helmet. You can check out that tutorial for client or server-side rending pages in React.

 In this guide, we will focus mainly on switching the Titles of a page when a user navigates from one page to another using the Routing feature.

Dynamically Update React Page Titles on Routing using React Helmet
Dynamically Update React Page Titles on Routing using React Helmet

 

 

So let’s get started!

 

Step 1 – Create React App

Before creating the React app, make sure you have create-react-app installed on your system. You can install it globally using npm (Node.js package manager) or npx (which comes bundled with npm):

npm install -g create-react-app

 

Next, use the create-react-app command followed by the name of new app to generate a new React project:

npx create-react-app my-react-helmet-app

 

Step 2 – Install the Necessary Packages

For our application, we will install the react-router-doc which helps

npm install react-router-dom react-helmet

 

Step 3 – Create a titles.js file:

Next, we will create the titles.js file that will store the titles for different pages:

const titles = {
  home: 'Home | My Awesome App',
  about: 'About | My Awesome App',
  contact: 'Contact | My Awesome App',
};

export default titles;

 

Step 4 – Set up your React components and routes:

Create Home.js, About.js, and Contact.js components and use React Helmet to set their titles:

// Home.js
import React from 'react';
import { Helmet } from 'react-helmet';
import titles from './titles';

const Home = () => {
  return (
    <>
      <Helmet>
        <title>{titles.home}</title>
      </Helmet>
      <h1>Home</h1>
    </>
  );
};

export default Home;

// About.js
import React from 'react';
import { Helmet } from 'react-helmet';
import titles from './titles';

const About = () => {
  return (
    <>
      <Helmet>
        <title>{titles.about}</title>
      </Helmet>
      <h1>About</h1>
    </>
  );
};

export default About;

// Contact.js
import React from 'react';
import { Helmet } from 'react-helmet';
import titles from './titles';

const Contact = () => {
  return (
    <>
      <Helmet>
        <title>{titles.contact}</title>
      </Helmet>
      <h1>Contact</h1>
    </>
  );
};

export default Contact;

 

Step 5 – Set up React Router:

Now, head towards the App.js file and set up React Router to handle navigation between pages:

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

const App = () => {
  return (
    <Router>
      <div>
        <nav>
          <ul>
            <li>
              <Link to="/">Home</Link>
            </li>
            <li>
              <Link to="/about">About</Link>
            </li>
            <li>
              <Link to="/contact">Contact</Link>
            </li>
          </ul>
        </nav>
        <Routes>
          <Route path="/" element={<Home />} />
          <Route path="/about" element={<About />} />
          <Route path="/contact" element={<Contact />} />
        </Routes>
      </div>
    </Router>
  );
};

export default App;

Now, when you navigate between pages, the titles will be fetched from the titles.js file and updated dynamically in the browser tab.

 

Step 6 – Run the Application

Finally, start the web server by executing the below command:

npm start

 

Conclusion

React Helmet is a powerful library that allows you to manage and update the document head of your React applications dynamically.

It enables you to set custom meta tags, titles, and other head elements, which is required for improved SEO performance, better social sharing previews, and an overall enhanced user experience.

Hope this helps…

Leave a Comment

Your email address will not be published. Required fields are marked *

istanbul escortHacklinkartvin escortGiresun escortEscortporno izleizmir escortsincan escortistanbul escortizmir escortGaziantep escortşişli escortkartal escortbodrum escortAntalya escortMarmaris escortpornoankara escortistanbul escorthttps://escortcity.net/Ankara çilingironwin girişHacklink satın alçankaya escortAyvalık Escortkütahya escortgümüşhane escortAksaray escortaydın escortkayseri escortçankaya escortkızılay escortkeçiören escorthepabeteryaman escortKiralık Bahis Siteleribonus veren sitelerKiralık Bahis SiteleriKiralık Bahis SayfasıAviator oynaCasinoslotdiyarbet girişgates of olympus oynasugar rush oynaSweet bonanza demowild west gold demo oynabodrum escortbodrum escortçeşme escortbig bass bonanza oynaredbullholdenracing.comCasinoslotistanbul escortHacklinkartvin escortGiresun escortEscortporno izleizmir escortsincan escortistanbul escortizmir escortGaziantep escortşişli escortkartal escortbodrum escortAntalya escortMarmaris escortpornoankara escortistanbul escorthttps://escortcity.net/Ankara çilingironwin girişHacklink satın alçankaya escortAyvalık Escortkütahya escortgümüşhane escortAksaray escortaydın escortkayseri escortçankaya escortkızılay escortkeçiören escorthepabeteryaman escortKiralık Bahis Siteleribonus veren sitelerKiralık Bahis SiteleriKiralık Bahis SayfasıAviator oynaCasinoslotdiyarbet girişgates of olympus oynasugar rush oynaSweet bonanza demowild west gold demo oynabodrum escortbodrum escortçeşme escortbig bass bonanza oynaredbullholdenracing.comCasinoslot
Diş eti ağrısıankara kocaeli nakliyatgüvenlik bariyerisakarya evden eve nakliyatgaziantep evden eve nakliyatnargilehttps://www.orneknakliyat.comseowordpress en iyi seo eklentileriizmir saç ekimiistanbul evden eve nakliyatimplantbebekeskişehir inşaat şirketleriantika eşya alanlarantika eşya alanlarantalya haberpgcdpmsagaziantep boşanma avukatıAntika alan yerlermaltepe antika eşya alanlarGaziantep Evden Eve TaşımacılıkGaziantep Halı Yıkamaizmir escortetiler antika eşya alanlaretiler antika eşya alanlarantika alanlarAccident LawyerDental Implantiqoseskişehir pelet kazanıgaziantep evden eve nakliyatDiş eti ağrısıankara kocaeli nakliyatgüvenlik bariyerisakarya evden eve nakliyatgaziantep evden eve nakliyatnargilehttps://www.orneknakliyat.comseowordpress en iyi seo eklentileriizmir saç ekimiistanbul evden eve nakliyatimplantbebekeskişehir inşaat şirketleriantika eşya alanlarantika eşya alanlarantalya haberpgcdpmsagaziantep boşanma avukatıAntika alan yerlermaltepe antika eşya alanlarGaziantep Evden Eve TaşımacılıkGaziantep Halı Yıkamaizmir escortetiler antika eşya alanlaretiler antika eşya alanlarantika alanlarAccident LawyerDental Implantiqoseskişehir pelet kazanıgaziantep evden eve nakliyat