Ich möchte den Dokumenttitel (in der Titelleiste des Browsers) für meine React-Anwendung festlegen. Ich habe versucht, den Titel des Reaktionsdokuments zu verwenden (scheint veraltet zu sein) und document.title
das constructor
und componentDidMount()
einzustellen - keine dieser Lösungen funktioniert.
javascript
reactjs
dom
eli
quelle
quelle
Antworten:
Sie können React Helmet verwenden :
quelle
Das funktioniert bei mir.
Bearbeiten: Wenn Sie den Webpack-Dev-Server verwenden, setzen Sie inline auf true
quelle
Für React 16.8 können Sie dies mit einer Funktionskomponente mithilfe von useEffect tun .
Beispielsweise:
Wenn das zweite Argument als Array verwendet wird, wird useEffect nur einmal aufgerufen, wodurch es ähnlich wird
componentDidMount
.quelle
Wie bereits erwähnt, können Sie den Helm verwenden
document.title = 'My new title'
und darauf reagieren aktualisieren. Beide Lösungen rendern weiterhin den ursprünglichen Titel "React App", bevor Skripte geladen werden.Wenn Sie
create-react-app
den ursprünglichen Dokumenttitel verwenden, wird dieser im<title>
Tag festgelegt/public/index.html
Datei festgelegt.Sie können dies direkt bearbeiten oder einen Platzhalter verwenden, der aus Umgebungsvariablen gefüllt wird:
/.env
::Wenn ich aus irgendeinem Grund einen anderen Titel in meiner Entwicklungsumgebung haben wollte -
/.env.development
::/public/index.html
::Dieser Ansatz bedeutet auch, dass ich die Umgebungsvariable für den Site-Titel aus meiner Anwendung mithilfe des globalen
process.env
Objekts lesen kann. Das ist sehr schön:Siehe: Hinzufügen benutzerdefinierter Umgebungsvariablen
quelle
Sie sollten den Dokumenttitel im Lebenszyklus von 'componentWillMount' festlegen:
quelle
Mit React Portals können Sie Elemente außerhalb des Root-React-Knotens (z
<title>
. B. at ) rendern , als wären sie tatsächliche React-Knoten. Jetzt können Sie den Titel sauber und ohne zusätzliche Abhängigkeiten festlegen:Hier ist ein Beispiel:
Fügen Sie einfach die Komponente in die Seite ein und stellen Sie Folgendes ein
pageTitle
:quelle
fullTitle
an den Inhalt angehängt wird , der bereits in index.html enthalten ist<title>Default Title</title>
.constructor
!). PropTypes aus 'Prop-Typen' importieren; ReactDOM aus 'react-dom' importieren; const titleNode = document.getElementsByTagName ("title") [0]; titleNode.innerText = ''; Standardklasse exportieren Titel erweitert React.PureComponent {static propTypes = {children: PropTypes.node,}; Konstruktor (Requisiten) {Super (Requisiten); this.el = titleNode; } render () {return ReactDOM.createPortal (this.props.children, this.el,); }} `` `In React 16.13 können Sie es direkt in der Renderfunktion festlegen:
Für Funktionskomponente:
quelle
Sie können einfach eine Funktion in einer js-Datei erstellen und für die Verwendung in Komponenten exportieren
Wie unten:
und verwenden Sie es in einer Komponente wie dieser:
quelle
Sie können Folgendes unten mit verwenden
document.title = 'Home Page'
oder Sie können dieses npm-Paket verwenden
npm i react-document-title
Viel Spaß beim Codieren !!!
quelle
Ich habe das nicht zu gründlich getestet, aber das scheint zu funktionieren. Geschrieben in TypeScript.
Verwendung:
Ich bin mir nicht sicher, warum andere daran interessiert sind, ihre gesamte App in ihre
<Title>
Komponente zu integrieren. Das kommt mir komisch vor.Durch die Aktualisierung des
document.title
Inneren wirdrender()
es aktualisiert / auf dem neuesten Stand gehalten, wenn Sie einen dynamischen Titel wünschen. Es sollte den Titel zurücksetzen, wenn es auch nicht gemountet ist. Portale sind süß, scheinen aber unnötig; Wir müssen hier keine DOM-Knoten manipulieren.quelle
Sie können ReactDOM verwenden und das
<title>
Tag ändernquelle
Ich benutze diese Methode, die ich herausgefunden habe, da sie für mich einfacher ist. Ich benutze es in Kombination mit Funktionskomponente. Tun Sie dies nur, wenn Sie sich nicht darum kümmern, dass kein Titel angezeigt wird, wenn der Benutzer Javascript auf Ihrer Seite deaktiviert.
Es gibt zwei Dinge, die Sie tun müssen.
1. Gehen Sie in Ihre index.html und löschen Sie diese Zeile hier
2.Gehen Sie in Ihre Hauptanwendungsfunktion und geben Sie diese zurück, die nur eine normale HTML-Struktur ist. Sie können Ihren Hauptinhalt von Ihrer Website kopieren und zwischen den Body-Tags einfügen:
Sie können den Titel nach Belieben ersetzen.
quelle
Wenn Sie ein Anfänger sind, können Sie sich einfach vor all dem retten, indem Sie in den öffentlichen Ordner Ihres React-Projektordners gehen und den Titel in "index.html" bearbeiten und Ihren Titel einfügen. Vergessen Sie nicht zu speichern, damit es reflektiert wird.
quelle