Обратите внимание, что при неправильной настройке могут возникнуть проблемы на стороне сервера.
Шота,
2
Мне нужен window.location для функции на стороне клиента. Поэтому я установил местоположение в состоянии моего компонента onMount, чтобы избежать проблем при рендеринге на стороне сервера.
Арвинд Шридхаран,
это не работает. или помогите мне со структурой этого в React. Я использовал const ddd = window.location.href; console.log (ддд);
Шурвир Мори 08
1
webpack будет жаловаться на это, говоря, что "окно не определено"
Франц См.
@FranzSee да, в коде на стороне сервера нет "окна", поэтому, если это ваша среда, вам нужно будет использовать что-то вроде req.originalUrlexpress или еще чего-то. В различных библиотеках реактивной маршрутизации, которые поддерживают SSR, есть методы для получения этой информации.
наверное,
60
Если вам нужен полный путь к вашему URL-адресу, вы можете использовать ванильный Javascript:
window.location.href
Чтобы получить только путь (без имени домена), вы можете использовать:
И если ваш компонент не находится внутри, <Route />вы можете использовать компонент более высокого порядка withRouter .
Ахмад Малеки
3
Чтобы получить текущий экземпляр маршрутизатора или текущее местоположение, вам необходимо создать компонент более высокого порядка с помощью withRouter from react-router-dom. в противном случае, когда вы пытаетесь получить доступ, this.props.locationон вернет undefined
Как memoizeя обычно использую lodash, это реализовано таким образом, чтобы избежать создания нового элемента без необходимости.
PS: Конечно, если вы не ограничены древними браузерами, вы можете захотеть попробовать new URL()что-то, но в основном вся ситуация более или менее бессмысленна, потому что вы получаете доступ к глобальной переменной тем или иным способом. Так почему бы не использовать window.location.hrefвместо этого?
Реферер - это URL-адрес страницы, на которой вы находились до перехода на эту страницу. Его тоже нельзя установить. Хотя отслеживание перемещений пользователей может быть полезно, при поиске URL-адреса это редко бывает нужно.
req.originalUrl
express или еще чего-то. В различных библиотеках реактивной маршрутизации, которые поддерживают SSR, есть методы для получения этой информации.Если вам нужен полный путь к вашему URL-адресу, вы можете использовать ванильный Javascript:
window.location.href
Чтобы получить только путь (без имени домена), вы можете использовать:
window.location.pathname
Источник: свойство Location pathname - W3Schools
Если вы еще не используете «response-router», вы можете установить его, используя:
yarn add react-router
затем в React.Component внутри "Route" вы можете вызвать:
this.props.location.pathname
Это возвращает путь, не включая доменное имя.
Спасибо @ abdulla-zulqarnain!
источник
window.location.pathname
this.props.location
это функция реактивного маршрутизатора , вам придется установить, если вы хотите ее использовать.Примечание: не возвращает полный URL.
источник
Вы получаете,
undefined
потому что у вас, вероятно, есть компоненты за пределами React Router.Помните, что вам нужно убедиться, что компонент, из которого вы вызываете,
this.props.location
находится внутри такого<Route />
компонента, как этот:<Route path="/dashboard" component={Dashboard} />
Затем внутри компонента Dashboard у вас есть доступ к
this.props.location
...источник
<Route />
вы можете использовать компонент более высокого порядка withRouter .Чтобы получить текущий экземпляр маршрутизатора или текущее местоположение, вам необходимо создать компонент более высокого порядка с помощью
withRouter
fromreact-router-dom
. в противном случае, когда вы пытаетесь получить доступ,this.props.location
он вернетundefined
пример
источник
Просто чтобы добавить немного дополнительной документации на эту страницу - я боролся с этой проблемой некоторое время.
Как сказано выше, самый простой способ получить URL-адрес - через
window.location.href
.затем мы можем извлечь части URL-адреса через ванильный Javascript, используя
let urlElements = window.location.href.split('/')
Затем мы
console.log(urlElements)
увидим массив элементов, созданный вызовом .split () для URL-адреса.После того, как вы нашли, к какому индексу в массиве вы хотите получить доступ, вы можете назначить его переменной
И теперь вы можете использовать значение urlElement, которое будет конкретной частью вашего URL-адреса, где хотите.
источник
Как уже упоминал кто-то другой, сначала вам нужен
react-router
пакет. Ноlocation
объект, который он вам предоставляет, содержит проанализированный URL.Но если вам очень нужен полный URL-адрес без доступа к глобальным переменным, я считаю, что самым быстрым способом сделать это будет
href
тот, который содержит полный URL.Как
memoize
я обычно используюlodash
, это реализовано таким образом, чтобы избежать создания нового элемента без необходимости.PS: Конечно, если вы не ограничены древними браузерами, вы можете захотеть попробовать
new URL()
что-то, но в основном вся ситуация более или менее бессмысленна, потому что вы получаете доступ к глобальной переменной тем или иным способом. Так почему бы не использоватьwindow.location.href
вместо этого?источник
Вы можете получить доступ к полному uri / url с помощью 'document.referrer'
Проверьте https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer
источник