Wie behalte ich document.title in der React App aktualisiert?
Da Reagieren, keine eingebaute Möglichkeit zum verwalten document.title
ich verwendet, um es in componentDidMount
meiner route-Handler.
Aber jetzt brauche ich für die änderung der Titel basiert auf state
geholt asynchron. Ich fing an assingments in componentDidUpdate
, aber jedes jetzt und dann habe ich vergessen zu setzen document.title
Zuordnung in einigen Seiten, und die vorherigen Titel-sticks um, bis ich schließlich bemerkt.
Idealerweise würde ich gerne eine Möglichkeit zum express document.title
deklarativ, ohne zu zuweisen. Eine Art "fake" - Komponente wäre wohl am bequemsten, da ich in der Lage sein wollen, geben Sie den Titel des Dokuments an mehrere schachtelungsebenen:
- Auf top-Niveau (die Standard-Titel);
- Auf page-Ebene (für einige Seiten, aber nicht alle);
- Manchmal, auf den inneren Komponenten-Ebene (z.B. Benutzer-Eingabe in einem Feld).
Zusätzliche Anforderungen:
- Titel angegebenen Kind sollte die override-Titel festgelegt durch die Eltern;
- Zuverlässig (garantiert Bereinigung auf route ändern);
- Sollte emittieren keine DOM (also keine hacks mit Komponente Rückkehr
<noscript>
); - Ich bin mit reagieren-router, aber es ist besser, wenn diese Komponente arbeitet mit anderen Routern auch.
Alles, was ich verwenden kann?
Dokument.Titel = this.Zustand.documentTitle
in Ihrem render-Funktion? Oder etwas ähnliches mit einem Scheck für die änderungen zunächst. render
, es soll keine Nebenwirkungen haben. Du meinst wohl componentDidUpdate
. Naja, da die app wächst, wird es schwieriger, halten Sie Dokument.title
konsistent, wenn Sie wollen, dass es gegenwärtig für einige Bildschirme, verwenden jedoch einige Standard-Titel für die anderen. Nur eine Seite zu vergessen, geben Sie den Titel, und es wird abgestanden. InformationsquelleAutor der Frage Dan Abramov | 2014-10-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schrieb ich reagieren-Dokument-Titel nur für die.
Es bietet einen deklarativen Weg zu geben
document.title
in einer single-page-app.Wenn Sie möchten, um Titel auf dem server nach rendering-Komponenten zu einem string, rufen Sie
DocumentTitle.rewind()
.Funktionen
<noscript>
;props
undstate
;Beispiel
Vorausgesetzt, Sie verwenden so etwas wie reagieren-router:
Quelle
Ich verfolgen, montiert Instanzen und verwenden Sie nur
title
gegeben, um die top -DocumentTitle
im bereitgestellten Beispiel-stack, Wann immer es updates bekommt gemountet oder unmountet werden. Auf dem servercomponentWillMount
feuert, aber wir nicht bekommendidMount
oderwillUnmount
, so stellen wirDocumentTitle.rewind()
dass eine Zeichenfolge zurück, und zerstört den Staat, um die Vorbereitung auf die nächste Anfrage.InformationsquelleAutor der Antwort Dan Abramov
Werfen Sie einen Blick auf die NFL reagieren-Helm.
InformationsquelleAutor der Antwort dbkaplun
dann
<Layout title="My Title"/>
einfach!InformationsquelleAutor der Antwort rajesh_kw
Versuchen reagieren-frozenhead, es ist tatsächlich anspruchsvoller als reagieren-Dokument-Titel - er ermöglicht es uns, ändern Titel, Beschreibung und alles andere in Abschnitt.
InformationsquelleAutor der Antwort Vadim Guzev
Mittlerweile, 3 Jahren gegangen! 😉
Wenn Sie ändern möchten anderen Seite Header als Titel (wie description, canonical, etc.), reagieren-Dokument-meta NPM Abhängigkeit könnte eine gute Sache zu verwenden.
InformationsquelleAutor der Antwort Pedro Ferreira