Comment puis-je garder document.titre mis à jour à Réagir application?

Depuis Réagir n'ont pas intégré de façon de gérer document.title, j'ai utilisé à l'intérieur de componentDidMount de mon itinéraire gestionnaires.

Mais maintenant, j'ai besoin de modifier le titre basé sur state extraites de manière asynchrone. J'ai commencé à mettre assingments en componentDidUpdate, mais chaque maintenant et puis j'ai oublier de mettre document.title cession de certaines pages, et le titre précédent, autour de bâtons jusqu'à ce que j'ai finalement remarqué.

Idéalement, j'aimerais un moyen d'exprimer document.title de manière déclarative, sans avoir à assigner. Une sorte de “faux” composants serait probablement plus pratique, étant donné que je veux être en mesure de préciser le titre du document à plusieurs niveaux d'imbrication:

  • Sur haut niveau (le titre par défaut);
  • Sur le niveau de la page (pour certaines pages, mais pas de tous);
  • Parfois, à l'intérieur d'un composant (par exemple, utilisateur de taper dans un champ).

Exigences supplémentaires:

  • Titre dans enfant doit ignorer le titre spécifié par le parent;
  • Fiable (ce qui garantit un nettoyage de changement d'itinéraire);
  • Ne doit pas émettre des DOM (c'est à dire pas de hacks avec le composant de retour <noscript>);
  • Je suis l'aide de réagir-routeur, mais c'est mieux si ce composant fonctionne avec d'autres routeurs trop.

Tout ce que je peux utiliser?

  • Quel est le problème viens de l'avoir document.title = this.state.documentTitle dans votre fonction rendu? Ou de faire quelque chose de similaire avec un chèque de changements.
  • Tout d'abord, vous ne devriez pas le faire dans render, il est censé ne pas avoir d'effets secondaires. Tu veux sans doute dire componentDidUpdate. Eh bien, comme l'application grandit, il devient plus difficile de garder document.title la même si vous voulez qu'il soit présent pour certains écrans, mais l'utilisation du titre par défaut pour les autres. Prend seulement une page d'oublier de spécifier le titre, et il devient obsolète.
InformationsquelleAutor Dan Abramov | 2014-10-08