Gostaria de definir o título do documento (na barra de título do navegador) para meu aplicativo React. Eu tentei usar o react-document-title (parece desatualizado) e configurar document.title
no constructor
e componentDidMount()
- nenhuma dessas soluções funciona.
javascript
reactjs
dom
eli
fonte
fonte
Respostas:
Você pode usar o Capacete React :
fonte
Isso funciona para mim.
Edit: Se você estiver usando webpack-dev-server definido inline como true
fonte
Para React 16.8, você pode fazer isso com um componente funcional usando useEffect .
Por exemplo:
Ter o segundo argumento como uma matriz chama useEffect apenas uma vez, tornando-o semelhante a
componentDidMount
.fonte
Como já foi mencionado, você pode usar
document.title = 'My new title'
e Reagir Capacete para atualizar o título da página. Ambas as soluções ainda renderizarão o título 'React App' inicial antes de os scripts serem carregados.Se você estiver usando,
create-react-app
o título do documento inicial é definido no arquivo de<title>
tag/public/index.html
.Você pode editar isso diretamente ou usar um marcador que será preenchido com as variáveis ambientais:
/.env
:Se por algum motivo eu quisesse um título diferente em meu ambiente de desenvolvimento -
/.env.development
:/public/index.html
:Essa abordagem também significa que posso ler a variável de ambiente do título do site em meu aplicativo usando o
process.env
objeto global , o que é bom:Veja: Adicionando Variáveis de Ambiente Personalizadas
fonte
você deve definir o título do documento no ciclo de vida de 'componentWillMount':
fonte
Os portais React permitem renderizar para elementos fora do nó React raiz (como em
<title>
), como se fossem nós React reais. Agora você pode definir o título de maneira limpa e sem dependências adicionais:Aqui está um exemplo:
Basta colocar o componente na página e definir
pageTitle
:fonte
fullTitle
ao conteúdo já encontrado em index.html's<title>Default Title</title>
.constructor
!) `` `Import React de 'react'; importar PropTypes de 'prop-types'; importar ReactDOM de 'react-dom'; const titleNode = document.getElementsByTagName ("title") [0]; titleNode.innerText = ''; exportar a classe padrão Title extends React.PureComponent {static propTypes = {children: PropTypes.node,}; construtor (adereços) {super (adereços); this.el = titleNode; } render () {return ReactDOM.createPortal (this.props.children, this.el,); }} `` `No React 16.13, você pode configurá-lo diretamente na função de renderização:
Para componente de função:
fonte
Simplesmente você pode criar uma função em um arquivo js e exportá-la para uso em componentes
como abaixo:
e usá-lo em qualquer componente como este:
fonte
Você pode usar o seguinte abaixo com
document.title = 'Home Page'
ou você pode usar este pacote npm
npm i react-document-title
Happy Coding !!!
fonte
Não testei muito bem, mas parece funcionar. Escrito em TypeScript.
Uso:
Não sei por que os outros estão interessados em colocar seu aplicativo inteiro dentro de seu
<Title>
componente, isso parece estranho para mim.Ao atualizar o
document.title
interior,render()
ele atualizará / permanecerá atualizado se você quiser um título dinâmico. Deve reverter o título quando desmontado também. Portais são bonitos, mas parecem desnecessários; realmente não precisamos manipular nenhum nó DOM aqui.fonte
Você pode usar ReactDOM e alterar a
<title>
tagfonte
Eu uso esse método, que descobri porque é mais fácil para mim. Eu o uso em combinação com o componente de função. Só faça isso se você não se importar que ele não exiba nenhum título se o usuário desabilitar o Javascript em sua página.
Existem duas coisas que você precisa fazer.
1. Vá para seu index.html e exclua esta linha aqui
2. Vá para a função mainapp e retorne isso, que é apenas uma estrutura html normal, você pode copiar e colar o conteúdo principal do seu site entre as tags do corpo:
Você pode substituir o título como desejar.
fonte
Se você é um iniciante, você pode apenas se salvar de tudo isso indo para a pasta pública de sua pasta do projeto react e editar o título em "index.html" e colocar o seu. Não se esqueça de salvar para que reflita.
fonte