Tenga en cuenta que puede tener problemas en el lado del servidor, si no se configura correctamente.
Shota
2
Necesitaba window.location para una función que es del lado del cliente. Así que configuré la ubicación en el estado de mi componente onMount para evitar problemas al renderizar en el lado del servidor.
Arvind Sridharan
no está trabajando. o amablemente ayúdame con la estructura de eso en reaccionar. Solía const ddd = window.location.href; console.log (ddd);
Shurvir Mori
1
webpack se quejará de este dicho 'la ventana no está definida'
Franz See
@FranzSee que sí, no hay una "ventana" en el código del lado del servidor, por lo que si ese es su entorno, necesitará usar algo como req.originalUrlexpress o lo que sea. Las diversas bibliotecas de enrutamiento de reacción que tienen soporte SSR tienen métodos para obtener esta información.
probablemente hasta el
60
Si necesita la ruta completa de su URL, puede usar Javascript vanilla:
window.location.href
Para obtener solo la ruta (menos el nombre de dominio), puede usar:
Y si su componente no está dentro de un <Route />, puede usarlo con un componente de orden superior enrutador .
Ahmad Maleki
3
Para obtener la instancia del enrutador actual o la ubicación actual , debe crear un componente de orden superior con withRouter from react-router-dom. de lo contrario, cuando intente acceder this.props.location, volverá undefined
Para lo memoizeque suelo usar lodash, se implementa de esa manera principalmente para evitar la creación de nuevos elementos sin necesidad.
PD: Por supuesto, si no estás restringido por navegadores antiguos, es posible que quieras probar new URL()algo, pero básicamente toda la situación es más o menos inútil, porque accedes a la variable global de una forma u otra. Entonces, ¿por qué no usarlo window.location.hrefen su lugar?
El referente es la URL de la página donde estaba antes de llegar a esta página. Puede que tampoco esté configurado. Aunque puede ser útil para rastrear los movimientos de los usuarios, rara vez es lo que desea cuando busca la URL.
req.originalUrl
express o lo que sea. Las diversas bibliotecas de enrutamiento de reacción que tienen soporte SSR tienen métodos para obtener esta información.Si necesita la ruta completa de su URL, puede usar Javascript vanilla:
window.location.href
Para obtener solo la ruta (menos el nombre de dominio), puede usar:
window.location.pathname
Fuente: Nombre de ruta de ubicación Propiedad - W3Schools
Si aún no está usando "react-router", puede instalarlo usando:
yarn add react-router
luego en un React.Component dentro de una "Ruta", puede llamar:
this.props.location.pathname
Esto devuelve la ruta, sin incluir el nombre de dominio.
¡Gracias @ abdulla-zulqarnain!
fuente
window.location.pathname
this.props.location
es una función de enrutador de reacción , tendrá que instalarla si desea utilizarla.Nota: no devuelve la URL completa.
fuente
Lo está obteniendo
undefined
porque probablemente tenga los componentes fuera de React Router.Recuerde que debe asegurarse de que el componente desde el que está llamando
this.props.location
esté dentro de un<Route />
componente como este:<Route path="/dashboard" component={Dashboard} />
Luego, dentro del componente Tablero, tiene acceso a
this.props.location
...fuente
<Route />
, puede usarlo con un componente de orden superior enrutador .Para obtener la instancia del enrutador actual o la ubicación actual , debe crear un componente de orden superior con
withRouter
fromreact-router-dom
. de lo contrario, cuando intente accederthis.props.location
, volveráundefined
Ejemplo
fuente
Solo para agregar un poco más de documentación a esta página, he estado luchando con este problema durante un tiempo.
Como se dijo anteriormente, la forma más fácil de obtener la URL es a través de
window.location.href
.luego podemos extraer partes de la URL a través de Javascript vanilla usando
let urlElements = window.location.href.split('/')
Luego,
console.log(urlElements)
veríamos la matriz de elementos producidos al llamar a .split () en la URL.Una vez que haya encontrado a qué índice de la matriz desea acceder, puede asignarlo a una variable
Y ahora puedes usar el valor de urlElement, que será la parte específica de tu URL, donde quieras.
fuente
Como alguien más mencionó, primero necesitas
react-router
package. Pero ellocation
objeto que le proporciona contiene URL analizada.Pero si desea una URL completa sin acceder a las variables globales, creo que la forma más rápida de hacerlo sería
href
es el que contiene una URL completa.Para lo
memoize
que suelo usarlodash
, se implementa de esa manera principalmente para evitar la creación de nuevos elementos sin necesidad.PD: Por supuesto, si no estás restringido por navegadores antiguos, es posible que quieras probar
new URL()
algo, pero básicamente toda la situación es más o menos inútil, porque accedes a la variable global de una forma u otra. Entonces, ¿por qué no usarlowindow.location.href
en su lugar?fuente
Puede acceder a la uri / url completa con 'document.referrer'
Consulte https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer
fuente