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?

Kommentar zu dem Problem - Öffnen
Was ist falsch, nur mit Dokument.Titel = this.Zustand.documentTitle in Ihrem render-Funktion? Oder etwas ähnliches mit einem Scheck für die änderungen zunächst. Kommentarautor: Mike Driver
@Mike: Erstens, Sie sollten das nicht tun, in die 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. Kommentarautor: Dan Abramov

InformationsquelleAutor der Frage Dan Abramov | 2014-10-08

Schreibe einen Kommentar