Observe que pode haver problemas no lado do servidor, se não estiver configurado corretamente.
Shota
2
Eu precisava de window.location para um recurso do lado do cliente. Portanto, defino o local no estado do meu componente onMount para evitar problemas durante a renderização no servidor.
Arvind Sridharan
Não está funcionando. ou gentilmente me ajude com a estrutura disso em reagir. Eu usei const ddd = window.location.href; console.log (ddd);
Shurvir Mori
1
o webpack vai reclamar com esse ditado 'janela não está definida'
Franz Veja
@FranzVeja sim, não há "janela" no código do servidor, portanto, se esse for o seu ambiente, você precisará usar algo como req.originalUrlexpress ou outros enfeites. As várias bibliotecas de roteamento de reação que têm suporte a SSR têm métodos para obter essas informações.
provavelmente até
60
Se você precisar do caminho completo do seu URL, poderá usar o Javascript baunilha:
window.location.href
Para obter apenas o caminho (menos o nome de domínio), você pode usar:
Nota: este não retorna a URL completa (nome do host, protocolo, etc.)
SgtPooki
13
Você está recebendo undefinedporque provavelmente possui os componentes externos ao React Router.
Lembre-se de que você precisa garantir que o componente do qual você está chamando this.props.locationesteja dentro de um <Route />componente como este:
<Route path="/dashboard" component={Dashboard} />
Em seguida, dentro do componente Painel, você tem acesso a this.props.location...
E se o seu componente não estiver dentro de um, <Route />você poderá usar o componente de ordem superior do Router .
Ahmad Maleki
3
Para obter a instância ou o local atual do roteador, é necessário criar um componente de ordem superior com withRouter from react-router-dom. caso contrário, quando você estiver tentando acessar, this.props.locationele retornará undefined
Para o que memoizeeu costumo usar lodash, é implementado dessa maneira principalmente para evitar a criação de novos elementos sem necessidade.
PS: É claro que você não está restrito a navegadores antigos new URL(), mas pode tentar algo, mas basicamente toda a situação é mais ou menos inútil, porque você acessa a variável global de uma ou de outra maneira. Então, por que não usar window.location.href?
O referenciador é o URL da página em que você estava antes de chegar a esta página. Também não pode ser definido. Embora possa ser útil para rastrear movimentos do usuário, raramente é o que você deseja ao procurar o URL.
req.originalUrl
express ou outros enfeites. As várias bibliotecas de roteamento de reação que têm suporte a SSR têm métodos para obter essas informações.Se você precisar do caminho completo do seu URL, poderá usar o Javascript baunilha:
window.location.href
Para obter apenas o caminho (menos o nome de domínio), você pode usar:
window.location.pathname
Fonte: Propriedade Nome do caminho da Localização - W3Schools
Se você ainda não estiver usando o "react-router", poderá instalá-lo usando:
yarn add react-router
em um React.Component dentro de uma "Rota", você pode chamar:
this.props.location.pathname
Isso retorna o caminho, sem incluir o nome do domínio.
Obrigado @ abdulla-zulqarnain!
fonte
window.location.pathname
this.props.location
é um recurso de roteador de reação , você precisará instalar se quiser usá-lo.Nota: não retorna o URL completo.
fonte
Você está recebendo
undefined
porque provavelmente possui os componentes externos ao React Router.Lembre-se de que você precisa garantir que o componente do qual você está chamando
this.props.location
esteja dentro de um<Route />
componente como este:<Route path="/dashboard" component={Dashboard} />
Em seguida, dentro do componente Painel, você tem acesso a
this.props.location
...fonte
<Route />
você poderá usar o componente de ordem superior do Router .Para obter a instância ou o local atual do roteador, é necessário criar um componente de ordem superior com
withRouter
fromreact-router-dom
. caso contrário, quando você estiver tentando acessar,this.props.location
ele retornaráundefined
Exemplo
fonte
Apenas para adicionar um pouco de documentação adicional a esta página - estou lutando com esse problema há algum tempo.
Como dito acima, a maneira mais fácil de obter o URL é via
window.location.href
.podemos então extrair partes do URL através de Javascript baunilha usando
let urlElements = window.location.href.split('/')
console.log(urlElements)
Veríamos então a matriz de elementos produzida chamando .split () na URL.Depois de encontrar qual índice na matriz você deseja acessar, você poderá atribuí-lo a uma variável
E agora você pode usar o valor de urlElement, que será a parte específica do seu URL, onde quiser.
fonte
Como alguém mencionou, primeiro você precisa do
react-router
pacote. Mas olocation
objeto que ele fornece contém um URL analisado.Mas se você deseja um URL completo sem acessar variáveis globais, acredito que a maneira mais rápida de fazer isso seria
href
é aquele que contém um URL completo.Para o que
memoize
eu costumo usarlodash
, é implementado dessa maneira principalmente para evitar a criação de novos elementos sem necessidade.PS: É claro que você não está restrito a navegadores antigos
new URL()
, mas pode tentar algo, mas basicamente toda a situação é mais ou menos inútil, porque você acessa a variável global de uma ou de outra maneira. Então, por que não usarwindow.location.href
?fonte
Você pode acessar a URL / URL completa com 'document.referrer'
Verifique https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer
fonte