Je souhaite définir le titre du document (dans la barre de titre du navigateur) pour mon application React. J'ai essayé d'utiliser react-document-title (semble obsolète) et de définir document.title
dans constructor
et componentDidMount()
- aucune de ces solutions ne fonctionne.
107
Réponses:
Vous pouvez utiliser le casque React :
la source
Cela fonctionne pour moi.
Edit: Si vous utilisez webpack-dev-server, définissez inline sur true
la source
Pour React 16.8, vous pouvez le faire avec un composant fonctionnel utilisant useEffect .
Par exemple:
Le fait d'avoir le deuxième argument en tant que tableau n'appelle useEffect qu'une seule fois, ce qui le rend similaire à
componentDidMount
.la source
Comme d'autres l'ont mentionné, vous pouvez utiliser
document.title = 'My new title'
et React Helmet pour mettre à jour le titre de la page. Ces deux solutions afficheront toujours le titre initial 'React App' avant le chargement des scripts.Si vous utilisez
create-react-app
le titre initial du document est défini dans le fichier de<title>
balise/public/index.html
.Vous pouvez le modifier directement ou utiliser un espace réservé qui sera rempli à partir de variables d'environnement:
/.env
:Si pour une raison quelconque je voulais un titre différent dans mon environnement de développement -
/.env.development
:/public/index.html
:Cette approche signifie également que je peux lire la variable d'environnement du titre du site depuis mon application à l'aide de l'
process.env
objet global , ce qui est bien:Voir: Ajouter des variables d'environnement personnalisées
la source
vous devez définir le titre du document dans le cycle de vie de 'componentWillMount':
la source
Les portails React peuvent vous permettre de rendre des éléments en dehors du nœud racine React (comme at
<title>
), comme s'il s'agissait de nœuds React réels. Alors maintenant, vous pouvez définir le titre proprement et sans aucune dépendance supplémentaire:Voici un exemple:
Mettez simplement le composant dans la page et définissez
pageTitle
:la source
fullTitle
au contenu déjà trouvé dans index.html<title>Default Title</title>
.constructor
!) `` Import React from 'react'; importer des PropTypes depuis 'prop-types'; importer ReactDOM depuis 'react-dom'; const titleNode = document.getElementsByTagName ("titre") [0]; titleNode.innerText = ''; Exporter la classe par défaut Titre étend React.PureComponent {statique propTypes = {enfants: PropTypes.node,}; constructeur (props) {super (props); this.el = titleNode; } render () {return ReactDOM.createPortal (this.props.children, this.el,); }} `` ``Dans React 16.13, vous pouvez le définir directement dans la fonction de rendu:
Pour le composant de fonction:
la source
Vous pouvez simplement créer une fonction dans un fichier js et l'exporter pour une utilisation dans les composants
comme ci-dessous:
et utilisez-le dans n'importe quel composant comme celui-ci:
la source
Vous pouvez utiliser les éléments suivants ci-dessous avec
document.title = 'Home Page'
ou Vous pouvez utiliser ce package npm
npm i react-document-title
Bon codage !!!
la source
Je n'ai pas testé cela de manière trop approfondie, mais cela semble fonctionner. Écrit en TypeScript.
Usage:
Je ne sais pas pourquoi les autres souhaitent insérer l'intégralité de leur application dans leur
<Title>
composant, cela me semble étrange.En mettant
document.title
à jour l' intérieur,render()
il rafraîchira / restera à jour si vous voulez un titre dynamique. Il devrait également revenir au titre une fois démonté. Les portails sont mignons, mais semblent inutiles; nous n'avons pas vraiment besoin de manipuler les nœuds DOM ici.la source
Vous pouvez utiliser ReactDOM et modifier la
<title>
balisela source
J'utilise cette méthode, que j'ai découverte car c'est plus facile pour moi. Je l'utilise en combinaison avec un composant de fonction. Ne faites cela que si vous ne vous souciez pas qu'il n'affiche aucun titre si l'utilisateur désactive Javascript sur votre page.
Vous devez faire deux choses.
1. allez dans votre index.html et supprimez cette ligne ici
2. allez dans votre fonction mainapp et renvoyez ceci qui n'est qu'une structure html normale, vous pouvez copier et coller votre contenu principal de votre site Web entre les balises body:
Vous pouvez remplacer le titre à votre guise.
la source
Si vous êtes un débutant, vous pouvez simplement vous sauver de tout cela en allant dans le dossier public de votre dossier de projet react et éditer le titre dans "index.html" et mettre le vôtre. N'oubliez pas de sauvegarder pour qu'il reflète.
la source