DEV Community

How to add a dynamic title on your React app

LuisPa on February 28, 2019

In this post, I'll show you how to create a simple component to add a dynamic title behavior on your web app. Here you have a repo with an applic...
Collapse
 
antibland profile image
Andy Hoffman

For those using React Hooks, here is the withTitle function:

const withTitle = ({ ChildComponent, title }) => (props) => (
  <>
    <TitleComponent title={title} />
    <ChildComponent {...props} />
  </>
);
Enter fullscreen mode Exit fullscreen mode
Collapse
 
alfredosalzillo profile image
Alfredo Salzillo • Edited
// routes.js

import React from 'react';
import { Route } from 'react-router';
import { TitleComponent } from './TitleComponent.jsx';

// withTitle function
const withTitle = ({ component: Component, title }) => {
    return class Title extends Component {
        render() {
            return (
                <React.Fragment>
                    <HelmetComponent title={title} />
                    <Component {...this.props} />
                </React.Fragment>
            );
        }
    };
};

I think you have mistakenly used HelmetComponent instead of TitleComponent.

Collapse
 
luispa profile image
LuisPa

Great observation, fixed!

Collapse
 
rob88 profile image
Reben Faraj • Edited

if you are struggling with integrating helmet title to your project , run this command npm i helmet
once installed

simply copy and paste into a new file called TitleComponent.js in the src folder

// TitleComponent.js
import React from 'react';
import Helmet from 'react-helmet';

const TitleComponent = ({ title }) => {
var defaultTitle = '⚛️ app';
return (

{title ? title : defaultTitle}

);
};

export { TitleComponent };

and in your app.js inside return(
//paste this !!

)
// lets assume that you have a contact page

import {TitleComponent } from './TitleComponent';
paste this into contact page inside a dev
tag

Its really confused me from the beginning, let me know if you need any help with this

Happy Codding :)

Collapse
 
dance2die profile image
Sung M. Kim • Edited

Thanks LuisPa for the post.

May I ask how HelmetComponent is implemented? I can't seem to find the source in the article 🙏

Collapse
 
luispa profile image
LuisPa

Sure man! Here you have a repo with an aplicable example: GitHub Repo

Collapse
 
dance2die profile image
Sung M. Kim

✨🌠💫🌟⭐

Collapse
 
sistemassouza profile image
Denis Souza • Edited

I have is problem

TypeError: Cannot call a class as a function

my code

thepracticaldev.s3.amazonaws.com/i...

Collapse
 
luispa profile image
LuisPa • Edited

Hi! Please put here the code from the withTitle() method, please.

You can see the example repo:

github.com/LuisPaGarcia/react-dyna...

Collapse
 
sistemassouza profile image
Denis Souza • Edited

Here my code

thepracticaldev.s3.amazonaws.com/i...

I did find problem

I only did change extends Component to extens React.Component at the TitleComponent

thanks

Thread Thread
 
luispa profile image
LuisPa

Great!

Collapse
 
sereiodobrejo profile image
Sereio-do-Brejo

Amazing!!! It also helps to improves SEO!
Thank you for the post.

Collapse
 
christanfoden profile image
Christan Foden • Edited

Could you do the same with the favicon?

Collapse
 
luispa profile image
LuisPa

Sure!