Comment obtenir la valeur du paramètre de chaîne de requête
Comment puis-je définir un itinéraire dans mes itinéraires.jsx fichier pour capturer le __firebase_request_key
valeur de paramètre dans une URL générée par Twitter de l'authentification unique sur le processus après la redirection à partir de leurs serveurs?
http://localhost:8000/#/signin?_k=v9ifuf&__firebase_request_key=blablabla
J'ai essayé avec les itinéraires suivants de la configuration, mais le :redirectParam
n'est pas attraper le mentionné param:
<Router>
<Route path="/" component={Main}>
<Route path="signin" component={SignIn}>
<Route path=":redirectParam" component={TwitterSsoButton} />
</Route>
</Route>
</Router>
- Il y a un Github discussion ici
- dommage que la question dit: "les chaînes de requête", mais est en fait de demander à propos de "paramètres d'url"
Vous devez vous connecter pour publier un commentaire.
Réagir Routeur v3
Réagir Routeur traite l'endroit pour vous et le transmet à votre RouteComponent que les accessoires. Vous pouvez accéder à la requête (après ? dans l'url) d'une part via
Si vous êtes à la recherche pour le chemin de valeurs de paramètres, séparés par un deux-points (:) à l'intérieur du routeur, ceux-ci sont accessibles via
Cela s'applique à la fin de Réagir Routeur v3 versions (pas sûr). Ancien routeur versions ont été signalés à utiliser
this.props.params.redirectParam
.Réagir Routeur v4 et Réagir Routeur v5
Réagir Routeur v4 de ne pas analyser la requête pour vous, mais vous ne pouvez y accéder via
this.props.location.search
. Pour des raisons de voir nbeuchat réponse.E. g. avec la chaîne de la requête bibliothèque importées comme
qs
vous pourriez faireVoir cette réponse pour encore plus d'idées sur l'analyse de la chaîne de recherche.
En outre, si votre composant n'est pas un enfant direct d'un
Switch
vous devez utiliser withRouter d'accéder à un routeur fourni des accessoires.Général
nizam.sp suggestion à faire
sera utile dans tous les cas.
console.dir()
en raison de avertissement ...au moins 🙂this.props.match.params.[field_name]
react-router-dom
j'ai eu à utiliserwithRouter
pour faire ce travail!Réagir Routeur v4
À l'aide de
component
Le composant est automatiquement rendu à la route accessoires.
À l'aide de
render
Route accessoires sont passés à la fonction rendu.
query params
de mon application actuel de l'adresse URL dans un composant enfant à l'aide de Réagir Routeur v4. Si vous êtes à la recherche pour lequery params
, cette.accessoires de jeu.emplacement.requête de Réagir Routeur 4 a été supprimé (actuellement à l'aide de v4.1.1). Voir cette réponse: stackoverflow.com/a/43630848/1508105/users/?q=...
mais vous pourriez avoir/user?q=...
. Vous devez utiliserthis.props.location.search
à Réagir Routeur v4 et analyser les résultats vous-même, comme expliqué dans ma réponse ci-dessous.this.props.location.search
n'existe pas.Réagir Routeur v3
À Réagir Routeur v3, vous pouvez obtenir la chaîne de la requête de
this.props.location.search
(?qs1=naisarg&qs2=parmar). Par exemple, aveclet params = queryString.parse(this.props.location.search)
, donnerait{ qs1 : 'naisarg', qs2 : 'parmar'}
Réagir Routeur v4
À Réagir Routeur v4, le
this.props.location.query
n'existe plus. Vous avez besoin d'utiliserthis.props.location.search
place et d'analyser les paramètres de la requête, soit par vous-même ou à l'aide d'un package existant commequery-string
.Exemple
Voici un exemple minimal à l'aide de Réagir Routeur v4 et la
query-string
bibliothèque.Rationnelle
La Réagir Routeur équipe rationnelle pour l'enlèvement de la
query
propriété est:Vous pouvez trouver toute la discussion sur GitHub.
Réagir Routeur v4 n'a plus le
props.location.query
objet (voir github discussion). Si l'on a accepté la réponse ne fonctionnera pas pour les nouveaux projets.Une solution pour la v4 est d'utiliser un à l'extérieur de la bibliothèque la chaîne de la requête pour analyser les
props.location.search
{'?foo': 'bar'}
Autant que je sache, il existe trois méthodes que vous pouvez faire.
1.utiliser une expression régulière pour obtenir la chaîne de requête.
2.vous pouvez utiliser le navigateur de l'api.
l'image de l'url actuelle est comme ceci:
nous voulons juste obtenir 123;
Première
Puis
3. l'utilisation d'une troisième bibliothèque appelée "la chaîne de la requête'.
Tout d'abord l'installer
Puis de l'importer de l'actuel fichier javascript:
Étape suivante consiste à obtenir 'token' dans l'url en cours, procédez de la manière suivante:
Espère que cela aide.
Mis à jour sur 25/02/2019
http://www.google.com.au?app=home&act=article&aid=160990
nous définissons une fonction permettant d'obtenir les paramètres:
Nous pouvons obtenir de l'aide "" par :
vous pouvez vérifier l' réagir-routeur, en simple,vous pouvez utiliser le code pour obtenir le paramètre de requête aussi longtemps que vous avez définis dans votre routeur:
props.params
est pour URL params (url segment avec le préfixe": "dans réagissent routeur),props.location.query
magasins de la chaîne de requête params (après le '?') et est ce que l'OP veut.Réagir Routeur v4
Veuillez noter qu'il est actuellement expérimentale.
Vérifier la compatibilité de navigateur ici: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/URLSearchParams#Browser_compatibility
Si votre Routeur est comme ça
Vous obtiendrez que l'id comme ceci
this.props.params.your_param_name
fonctionne.C'est la façon d'obtenir les paramètres de votre chaîne de requête.
S'il vous plaît ne
console.log(this.props);
à explorer toutes les possibilités.React router
à partir de v4 à partir de plus vous donne laquery params
directement dans sonlocation
objet. La raison d'êtreAvoir compris qu'Il serait tout simplement faire plus de sens à analyser emplacement.la recherche de votre point de vue composants qui s'attendent à recevoir un objet de requête.
Vous pouvez le faire de manière générique, en remplaçant la
withRouter
dereact-router
commecustomWithRouter.js
Si vous n'obtenez pas le
this.props
... vous vous attendiez sur la base des autres réponses, vous devrez peut-être utiliserwithRouter
(docs v4):J'ai eu un moment difficile la résolution de cette question. Si aucun de ces travaux, vous pouvez essayer ceci à la place. Je suis à l'aide de create-réagir-app
Exigences
réagir-routeur-dom": "^4.3.1"
Solution
À l'endroit où routeur est spécifié
Ajouter le nom du paramètre que vous souhaitez passer de ce genre
À la page où vous êtes rendu/chemin vous pouvez spécifier cette option pour afficher le nom du paramètre d'appel id comme ceci
À la fin de l'exportation par défaut
N'oubliez pas d'inclure l'importation
Lors de la console.journal(ce.d'accessoires, vous serez en mesure de ce qui a été transmis. Amusez-vous!
RouteComponentProps<{id: number}>
Dans le composant où vous en avez besoin pour accéder aux paramètres, vous pouvez utiliser
this.props.location.state.from.search
qui va révéler l'ensemble de la chaîne de requête (tout ce qui est après le
?
signe)Peut-être un peu en retard mais c'réagir crochet peut vous aider à obtenir/définir des valeurs dans l'URL de la requête: https://github.com/rudyhuynh/use-url-search-params (écrit par moi).
Il fonctionne avec ou sans
react-router
.Ci-dessous l'exemple de code dans votre cas:
À Réagir Routeur v4 uniquement withRoute est correcte
Vous pouvez obtenir l'accès à l'histoire de propriétés de l'objet et les plus proches le match via le withRouter d'ordre supérieur composant. withRouter va passer le jour du match, de l'emplacement, et l'histoire des accessoires pour le enveloppés composant chaque fois qu'il rend.
https://reacttraining.com/react-router/web/api/withRouter
J'ai utilisé un package externe appelé la chaîne de la requête pour analyser les paramètres d'url comme si.
Vous pouvez voir la requête en utilisant:
this.props.location.search
solution plus simple!
de routage :
à réagir code :