Comment puis-je définir un itinéraire dans mon fichier routes.jsx pour capturer la __firebase_request_key
valeur du paramètre à partir d'une URL générée par le processus d'authentification unique de Twitter après la redirection depuis leurs serveurs?
http://localhost:8000/#/signin?_k=v9ifuf&__firebase_request_key=blablabla
J'ai essayé avec la configuration des itinéraires suivante, mais le :redirectParam
n'attrape pas le paramètre mentionné:
<Router>
<Route path="/" component={Main}>
<Route path="signin" component={SignIn}>
<Route path=":redirectParam" component={TwitterSsoButton} />
</Route>
</Route>
</Router>
reactjs
react-router
Franco
la source
la source
query strings
"? var1 = val & var2 = val2",:url paramters
"/ photos /: companyiD / new"Réponses:
React Router v3
React Router analyse déjà l'emplacement pour vous et le transmet à votre RouteComponent comme accessoire. Vous pouvez accéder à la partie requête (après? Dans l'url) via
Si vous recherchez les valeurs des paramètres de chemin, séparées par deux points (:) à l'intérieur du routeur, celles-ci sont accessibles via
Cela s'applique aux dernières versions de React Router v3 (je ne sais pas laquelle). Des versions de routeur plus anciennes auraient été utilisées
this.props.params.redirectParam
.React Router v4 et React Router v5, génériques
React Router v4 n'analyse plus la requête pour vous, mais vous ne pouvez y accéder que via
this.props.location.search
. Pour des raisons, voir la réponse de nbeuchat .Par exemple, avec la bibliothèque qs importée comme
qs
vous pourriez le faireUne autre bibliothèque serait une chaîne de requête . Voir cette réponse pour plus d'idées sur l'analyse de la chaîne de recherche. Si vous n'avez pas besoin de compatibilité IE, vous pouvez également utiliser
Pour les composants fonctionnels, vous devez remplacer
this.props.location
par le crochet useLocation . Remarque, vous pouvez l'utiliserwindow.location.search
, mais cela ne permettra pas de déclencher le rendu React sur les modifications. Si votre composant (non fonctionnel) n'est pas un enfant direct d'un,Switch
vous devez utiliser withRouter pour accéder à l'un des accessoires fournis par le routeur.Général
Suggestion de nizam.sp à faire
sera utile dans tous les cas.
la source
console.dir()
raison d'une note d'avertissement ... au moins :)react-router-dom
je devais utiliserwithRouter
pour faire ce travail!React Router v4
En utilisant
component
Le composant est automatiquement rendu avec les accessoires d'itinéraire.
En utilisant
render
Les accessoires de route sont passés à la fonction de rendu.
la source
query params
URL actuelle de mon application dans un composant enfant à l'aide de React Router v4. Si vous recherchez lequery params
, this.props.location.query dans React Router 4 a été supprimé (en utilisant actuellement la v4.1.1). Voir cette réponse: stackoverflow.com/a/43630848/1508105/users/?q=...
mais vous auriez pu/user?q=...
. Vous devez utiliserthis.props.location.search
dans React Router v4 et analyser les résultats vous-même comme expliqué dans ma réponse ci-dessous.this.props.location.search
n'existe pas.React Router v3
Avec React Router v3, vous pouvez obtenir une chaîne de requête à partir de
this.props.location.search
(? Qs1 = naisarg & qs2 = parmar). Par exemple, aveclet params = queryString.parse(this.props.location.search)
, donnerait{ qs1 : 'naisarg', qs2 : 'parmar'}
React Router v4
Avec React Router v4, le
this.props.location.query
n'existe plus. Vous devez utiliser à lathis.props.location.search
place et analyser les paramètres de requête par vous-même ou en utilisant un package existant tel quequery-string
.Exemple
Voici un exemple minimal utilisant React Router v4 et la
query-string
bibliothèque.Rationnel
L'équipe rationnelle du React Router pour retirer la
query
propriété est:Vous pouvez trouver la discussion complète sur GitHub .
la source
Pour autant que je sache, il existe trois méthodes pour cela.
1. utilisez l'expression régulière pour obtenir la chaîne de requête.
2. vous pouvez utiliser l'API du navigateur. l'image l'url actuelle est comme ceci:
nous voulons juste obtenir 123;
Première
alors
3. utilisez une troisième bibliothèque appelée «chaîne de requête». Installez-le d'abord
Ensuite, importez-le dans le fichier javascript actuel:
L'étape suivante consiste à obtenir «token» dans l'url actuelle, procédez comme suit:
J'espère que cela aide.
Mis à jour le 25/02/2019
http://www.google.com.au?app=home&act=article&aid=160990
nous définissons une fonction pour obtenir les paramètres:
Nous pouvons obtenir de «l'aide» en:
la source
React Router v4 n'a plus l'
props.location.query
objet (voir la discussion sur github ). La réponse acceptée ne fonctionnera donc pas pour les nouveaux projets.Une solution pour v4 consiste à utiliser une chaîne de requête de bibliothèque externe pour analyser
props.location.search
la source
{'?foo': 'bar'}
var prefixed = qs.parse('?a=b&c=d', { ignoreQueryPrefix: true });
devrait le réparer. Exemple trouvé ici: github.com/ljharb/qsLors de l'utilisation de hooks React, il n'y a aucun accès auquel accéder
this.props.location
. Pour capturer les paramètres d'URL, utilisezwindow
object.la source
React Router v4
Veuillez noter qu'il est actuellement expérimental.
Vérifiez la compatibilité du navigateur ici: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/URLSearchParams#Browser_compatibility
la source
vous pouvez vérifier le react-router , en simple, vous pouvez utiliser le code pour obtenir le paramètre de requête tant que vous avez défini dans votre routeur:
la source
props.params
est pour les paramètres d'URL (segment d'url préfixé avec ':' dans le routeur de réaction),props.location.query
stocke les paramètres de chaîne de requête (après le '?') et est ce que OP veut.React Router 5.1+
5.1 a introduit divers crochets comme
useLocation
etuseParams
qui pourraient être utiles ici.Exemple:
Ensuite, si nous avons visité dire
Vous pouvez le récupérer comme
la source
Si votre routeur est comme ça
Vous obtiendrez cet identifiant comme ceci
la source
Avec cette doublure, vous pouvez l'utiliser n'importe où dans React Hook et React Class Component avec du JavaScript simple.
https://www.hunterisgod.com/?city=Leipzig
la source
Si vous n'obtenez pas le
this.props
... que vous attendiez sur la base des autres réponses, vous devrez peut-être utiliserwithRouter
( docs v4 ):la source
J'ai eu du mal à résoudre ce problème. Si aucun des éléments ci-dessus ne fonctionne, essayez-le à la place. J'utilise l'application create-react-app
Exigences
react-router-dom ":" ^ 4.3.1 "
Solution
À l'emplacement où le routeur est spécifié
Ajoutez le nom du paramètre que vous souhaitez transmettre comme ceci
Sur la page où vous effectuez le rendu / path, vous pouvez le spécifier pour afficher l'ID d'appel du nom du paramètre comme ceci
À la fin où vous exportez par défaut
N'oubliez pas d'inclure l'importation
Lorsque console.log (this.props) vous pourrez ce qui a été transmis. S'amuser!
la source
RouteComponentProps<{id: number}>
React router
à partir de la v4 ne vous donne plusquery params
directement le dans sonlocation
objet. La raison étantCela étant, il serait plus logique d'analyser simplement location.search dans vos composants de vue qui attendent un objet de requête.
Vous pouvez le faire génériquement en redéfinissant la
withRouter
dereact-router
commecustomWithRouter.js
la source
la source
Peut-être un peu en retard mais ce crochet réactif peut vous aider à obtenir / définir des valeurs dans la requête URL: https://github.com/rudyhuynh/use-url-search-params (écrit par moi).
Cela fonctionne avec ou sans
react-router
. Voici un exemple de code dans votre cas:la source
this.props.params.your_param_name
marchera.C'est le moyen d'obtenir les paramètres de votre chaîne de requête.
Veuillez faire
console.log(this.props);
pour explorer toutes les possibilités.la source
Dans le composant où vous devez accéder aux paramètres que vous pouvez utiliser
this.props.location.state.from.search
qui révèlera toute la chaîne de requête (tout ce qui se trouve après le
?
signe)la source
Disons qu'il y a une URL comme suit
Si nous voulons extraire le code de cette URL, la méthode ci-dessous fonctionnera.
la source
Dans React Router v4 uniquement avecRoute est la manière correcte
Vous pouvez accéder aux propriétés de l'objet historique et à la correspondance la plus proche via le composant d'ordre supérieur withRouter. withRouter transmettra les accessoires de correspondance, l'emplacement et l'historique mis à jour au composant encapsulé à chaque rendu.
https://reacttraining.com/react-router/web/api/withRouter
la source
J'ai utilisé un package externe appelé chaîne de requête pour analyser le paramètre URL comme ceci.
la source
Lorsque vous travaillez avec react route dom, alors videz l'objet avec for match, mais si vous faites le code suivant, il sera utilisé pour le composant es6 ainsi que pour le composant function.
De cette façon, vous pouvez obtenir des accessoires et faire correspondre les paramètres et l'ID de profil
Cela a fonctionné pour moi après de nombreuses recherches sur le composant es6.
la source
Ou peut-être quelque chose comme ça?
la source
Vous pouvez créer un crochet simple pour extraire les paramètres de recherche de l'emplacement actuel:
alors vous pouvez l'utiliser dans votre composant fonctionnel comme ceci:
la source
la source
la source
la solution la plus simple!
en routage:
dans le code react:
la source