Me gustaría establecer el título del documento (en la barra de título del navegador) para mi aplicación React. Intenté usar react-document-title (parece desactualizado) y configurar document.title
en constructor
y componentDidMount()
, ninguna de estas soluciones funciona.
javascript
reactjs
dom
eli
fuente
fuente
Respuestas:
Puedes usar React Helmet :
fuente
Esto funciona para mi.
Editar: si está utilizando webpack-dev-server, establezca en línea en verdadero
fuente
Para React 16.8, puede hacer esto con un componente funcional usando useEffect .
Por ejemplo:
Tener el segundo argumento como una matriz llama a useEffect solo una vez, lo que lo hace similar a
componentDidMount
.fuente
Como han mencionado otros, puede usar
document.title = 'My new title'
y React Helmet para actualizar el título de la página. Ambas soluciones aún mostrarán el título inicial de 'React App' antes de que se carguen los scripts.Si está utilizando
create-react-app
el título del documento inicial , se establece en el archivo de<title>
etiqueta/public/index.html
.Puede editar esto directamente o usar un marcador de posición que se completará a partir de variables ambientales:
/.env
:Si por alguna razón quisiera un título diferente en mi entorno de desarrollo -
/.env.development
:/public/index.html
:Este enfoque también significa que puedo leer la variable de entorno del título del sitio desde mi aplicación utilizando el
process.env
objeto global , lo cual es bueno:Ver: Agregar variables de entorno personalizadas
fuente
debe establecer el título del documento en el ciclo de vida de 'componentWillMount':
fuente
React Portals puede permitirle renderizar elementos fuera del nodo raíz de React (como en
<title>
), como si fueran nodos de React reales. Así que ahora puede establecer el título de forma limpia y sin dependencias adicionales:He aquí un ejemplo:
Simplemente coloque el componente en la página y configure
pageTitle
:fuente
fullTitle
al contenido que ya se encuentra en index.html<title>Default Title</title>
.constructor
!) `` Import React from 'react'; importar PropTypes de 'prop-types'; importar ReactDOM desde 'react-dom'; const titleNode = document.getElementsByTagName ("título") [0]; titleNode.innerText = ''; exportar clase predeterminada El título extiende React.PureComponent {static propTypes = {children: PropTypes.node,}; constructor (props) {super (props); this.el = titleNode; } render () {return ReactDOM.createPortal (this.props.children, this.el,); }} ``En React 16.13, puede configurarlo directamente dentro de la función de renderizado:
Para componente de función:
fuente
Simplemente puede crear una función en un archivo js y exportarla para su uso en componentes
como abajo:
y utilícelo en cualquier componente como este:
fuente
Puede utilizar lo siguiente a continuación con
document.title = 'Home Page'
o puede usar este paquete npm
npm i react-document-title
Codificación feliz !!!
fuente
No lo he probado demasiado a fondo, pero parece funcionar. Escrito en TypeScript.
Uso:
No estoy seguro de por qué otros están interesados en poner toda su aplicación dentro de su
<Title>
componente, eso me parece extraño.Al actualizar el
document.title
interior,render()
se actualizará / se mantendrá actualizado si desea un título dinámico. También debería revertir el título cuando se desmonta. Los portales son bonitos, pero parecen innecesarios; realmente no necesitamos manipular ningún nodo DOM aquí.fuente
Puede usar ReactDOM y alterar la
<title>
etiquetafuente
Utilizo este método, que descubrí porque es más fácil para mí. Lo uso en combinación con el componente de función. Solo haga esto, si no le importa que no muestre ningún título si el usuario deshabilita Javascript en su página.
Hay dos cosas que debes hacer.
1.Vaya a su index.html y elimine esta línea aquí
2.Vaya a la función de su aplicación principal y devuelva esto, que es solo una estructura html normal, puede copiar y pegar su contenido principal de su sitio web entre las etiquetas del cuerpo:
Puede reemplazar el título como desee.
fuente
Si eres un principiante, puedes salvarte de todo eso yendo a la carpeta pública de tu carpeta del proyecto de reacción y editando el título en "index.html" y pon el tuyo. No olvide guardar para que se refleje.
fuente