Как получить полный URL-адрес из компонента ReactJS?
Я думаю, что это должно быть что-то вроде this.props.location
, но это undefined
Как получить полный URL-адрес из компонента ReactJS?
Я думаю, что это должно быть что-то вроде this.props.location
, но это undefined
window.location.href
- это то, что вы ищете.
this.props.location
- это функция реагирующего маршрутизатора, которую вы должны установить, если хотите ее использовать.
Примечание: не возвращает полный URL.
Если вам нужен полный путь вашего URL, вы можете использовать ванильный Javascript:
window.location.href
Чтобы получить только путь (без имени домена), вы можете использовать:
window.location.pathname
console.log(window.location.pathname); //yields: "/js" (where snippets run)
console.log(window.location.href); //yields: "https://stacksnippets.net/js"
Вы становитесь undefined
потому что у вас, вероятно, есть компоненты вне React Router.
Помните, что вам нужно убедиться, что компонент, из которого вы вызываете this.props.location
находится внутри компонента <Route/>
такого как:
<Route path="/dashboard" component={Dashboard}/>
Затем внутри компонента Dashboard у вас есть доступ к this.props.location
...
Как кто-то еще упомянул, для начала вам нужен пакет react-router
. Но объект location
который он предоставляет вам, содержит проанализированный URL.
Но если вам нужен полный URL без доступа к глобальным переменным, я считаю, что самый быстрый способ сделать это
...
const getA = memoize(() => document.createElement('a'));
const getCleanA = () => Object.assign(getA(), { href: '' });
const MyComponent = ({ location }) => {
const { href } = Object.assign(getCleanA(), location);
...
href
- это тот, который содержит полный URL.
Для memoize
я обычно использую lodash
, он реализован таким образом, чтобы избежать создания нового элемента без необходимости.
PS: Конечно, если вы не ограничены древними браузерами, вы можете попробовать new URL()
, но в целом вся ситуация более или менее бессмысленна, потому что вы обращаетесь к глобальной переменной тем или иным способом. Так почему бы не использовать вместо этого window.location.href
?
Пытаться:
this.props.match.params
Вы можете получить полный uri/url с помощью документа document.referrer.
Проверьте https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer