Как я могу определить маршрут в моем файле rout.jsx, чтобы захватить __firebase_request_key
значение параметра из URL, сгенерированного процессом единого входа Twitter после перенаправления с их серверов?
http://localhost:8000/#/signin?_k=v9ifuf&__firebase_request_key=blablabla
Я пробовал со следующей конфигурацией маршрутов, но :redirectParam
упомянутый параметр не перехватывает:
<Router>
<Route path="/" component={Main}>
<Route path="signin" component={SignIn}>
<Route path=":redirectParam" component={TwitterSsoButton} />
</Route>
</Route>
</Router>
reactjs
react-router
франко
источник
источник
query strings
"? var1 = val & var2 = val2"url paramters
Ответы:
React Router v3
React Router уже анализирует местоположение для вас и передает его вашему RouteComponent в качестве реквизита. Вы можете получить доступ к части запроса (после? В URL) через
Если вы ищете значения параметров пути, разделенные двоеточием (:) внутри маршрутизатора, они доступны через
Это относится к поздним версиям React Router v3 (не знаю, какие именно). Сообщалось, что использовались более старые версии маршрутизатора
this.props.params.redirectParam
.React Router v4 и React Router v5, общий
React Router v4 больше не анализирует запрос, но вы можете получить к нему доступ только через
this.props.location.search
. По причинам см . Ответ nbeuchat .Например, с импортированной библиотекой qs, как
qs
вы могли бы сделатьДругой библиотекой будет строка запроса . Посмотрите этот ответ, чтобы узнать больше о разборе строки поиска. Если вам не нужна IE-совместимость, вы также можете использовать
Для функциональных компонентов вы бы заменили
this.props.location
на ловушку useLocation . Обратите внимание, что вы можете использоватьwindow.location.search
, но это не позволит запускать рендеринг React при изменениях. Если ваш (нефункциональный) компонент не является прямым потомком,Switch
вам нужно использовать withRouter для доступа к любому из реквизитов, предоставленных маршрутизатором.генеральный
предложение nizam.sp сделать
будет полезно в любом случае.
источник
console.dir()
из-за предупреждения ... по крайней мере :)react-router-dom
I должен был использовать ,withRouter
чтобы сделать эту работу!React Router v4
С помощью
component
Компонент автоматически отображается с помощью реквизита маршрута.
С помощью
render
Маршрутные реквизиты передаются в функцию рендеринга.
источник
query params
текущему URL моего приложения в дочернем компоненте с помощью React Router v4. Если вы ищетеquery params
, this.props.location.query в React Router 4 был удален (в настоящее время используется v4.1.1). Смотрите этот ответ: stackoverflow.com/a/43630848/1508105/users/?q=...
но могли бы/user?q=...
. Вам следует использоватьthis.props.location.search
React Router v4 и проанализировать результаты самостоятельно, как описано в моем ответе ниже.this.props.location.search
не существует.React Router v3
С React Router v3 вы можете получить строку запроса из
this.props.location.search
(? Qs1 = naisarg & qs2 = parmar). Например, сlet params = queryString.parse(this.props.location.search)
, даст{ qs1 : 'naisarg', qs2 : 'parmar'}
React Router v4
С React Router v4
this.props.location.query
он больше не существует.this.props.location.search
Вместо этого вам нужно использовать и анализировать параметры запроса самостоятельно или с помощью существующего пакета, такого какquery-string
.пример
Вот минимальный пример использования React Router v4 и
query-string
библиотеки.рациональный
Команда React Router, рациональная для удаления
query
объекта:Вы можете найти полное обсуждение на GitHub .
источник
Насколько я знаю, есть три способа сделать это.
1. использовать регулярное выражение для получения строки запроса.
2.Вы можете использовать браузер API. image текущий URL выглядит так:
мы просто хотим получить 123;
Первый
затем
3. использовать третью библиотеку под названием «строка запроса». Сначала установите его
Затем импортируйте его в текущий файл JavaScript:
Следующим шагом является получение «токена» в текущем URL, сделайте следующее:
Надеюсь, поможет.
Обновлено 25/02/2019
http://www.google.com.au?app=home&act=article&aid=160990
мы определяем функцию для получения параметров:
Мы можем получить «помощь»:
источник
React Router v4 больше не имеет
props.location.query
объекта (см. Обсуждение github ). Таким образом, принятый ответ не будет работать для новых проектов.Решением для v4 является использование внешней строки запроса библиотеки для анализа
props.location.search
источник
{'?foo': 'bar'}
var prefixed = qs.parse('?a=b&c=d', { ignoreQueryPrefix: true });
должен это исправить. Пример найден здесь: github.com/ljharb/qsПри использовании React-хуков нет доступа к доступу
this.props.location
. Для захвата параметров URL используйтеwindow
объект.источник
React Router v4
Пожалуйста, обратите внимание, что это в настоящее время экспериментально.
Проверьте совместимость браузера здесь: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/URLSearchParams#Browser_compatibility
источник
Вы можете проверить реагирующий маршрутизатор , просто, вы можете использовать код для получения параметра запроса, если вы определили его в вашем маршрутизаторе:
источник
props.params
предназначен для параметров URL (сегмент URL с префиксом «:» в маршрутизаторе реагирования),props.location.query
хранит параметры строки запроса (после «?») и является тем, что хочет OP.React Router 5.1+
5.1 введены различные крючки, такие как
useLocation
иuseParams
которые могут быть здесь полезны.Пример:
Тогда, если мы посетили сказать
Вы можете получить это как
источник
Если ваш роутер такой
Вы получите этот идентификатор, как это
источник
С этим однострочником вы можете использовать его в любом месте как React Hook, так и React Class Component с простым JavaScript.
https://www.hunterisgod.com/?city=Leipzig
источник
Если вы не получаете
this.props
... вы ожидали, основываясь на других ответах, вам может потребоваться использоватьwithRouter
( docs v4 ):источник
Мне было трудно решить эту проблему. Если ничего из вышеперечисленного не работает, вы можете попробовать это вместо этого. Я использую приложение create-реагировать
Требования
response-router-dom ":" ^ 4.3.1 "
Решение
В месте, где указан маршрутизатор
Добавьте имя параметра, который вы хотите передать следующим образом
На странице, на которой вы рендерингуете / path, вы можете указать это для просмотра имени параметра с идентификатором вызова следующим образом
В конце, где вы экспортируете дефолт
Не забудьте включить импорт
Когда console.log (this.props) вы сможете получить то, что было передано. Радоваться, веселиться!
источник
RouteComponentProps<{id: number}>
React router
с v4 и далее больше не дает вамquery params
непосредственно в своемlocation
объекте. Причина в том,Включив это, было бы более разумно просто проанализировать location.search в ваших компонентах представления, ожидающих объект запроса.
Вы можете сделать это в общем, переопределив
withRouter
изreact-router
какcustomWithRouter.js
источник
источник
Может быть, немного поздно, но этот хук реакции может помочь вам получить / установить значения в запросе URL: https://github.com/rudyhuynh/use-url-search-params (написано мной).
Работает с или без
react-router
. Ниже приведен пример кода в вашем случае:источник
this.props.params.your_param_name
будет работать.Это способ получить параметры из строки запроса.
Пожалуйста, сделайте,
console.log(this.props);
чтобы изучить все возможности.источник
В компоненте, где вам нужно получить доступ к параметрам, вы можете использовать
this.props.location.state.from.search
который покажет всю строку запроса (все после
?
знака)источник
Скажи, что есть URL-адрес следующим образом
Если мы хотим извлечь код из этого URL, будет работать следующий метод.
источник
В React Router v4 только withRoute - это правильный путь
Вы можете получить доступ к свойствам объекта истории и совпадению ближайшего с помощью компонента высшего порядка withRouter. withRouter будет передавать обновленные совпадения, местоположение и историю в упакованный компонент всякий раз, когда он рендерится.
https://reacttraining.com/react-router/web/api/withRouter
источник
Я использовал внешний пакет с именем query-string для разбора параметра url следующим образом.
источник
Когда вы работаете с реагирующим маршрутом, dom затем будет очищать объект с помощью for match, но если вы выполните следующий код, то это будет для компонента es6, так же как и для компонента функции напрямую.
Таким образом, вы можете получить реквизит и сопоставить параметры и идентификатор профиля
Это сработало для меня после долгих исследований компонента es6.
источник
Или, может быть, что-то подобное?
источник
Вы можете создать простой хук для извлечения параметров поиска из текущего местоположения:
тогда вы можете использовать его внутри своего функционального компонента следующим образом:
источник
источник
источник
самое простое решение!
в маршрутизации:
в коде реакции:
источник