Wie kann ich eine Route in meiner Datei route.jsx definieren, um den __firebase_request_key
Parameterwert von einer URL zu erfassen, die vom Single Sign-On-Prozess von Twitter nach der Umleitung von den Servern generiert wurde?
http://localhost:8000/#/signin?_k=v9ifuf&__firebase_request_key=blablabla
Ich habe es mit der folgenden :redirectParam
Routenkonfiguration versucht, aber die fängt den genannten Parameter nicht ab:
<Router>
<Route path="/" component={Main}>
<Route path="signin" component={SignIn}>
<Route path=":redirectParam" component={TwitterSsoButton} />
</Route>
</Route>
</Router>
reactjs
react-router
Franco
quelle
quelle
query strings
"? var1 = val & var2 = val2" ,url paramters
: "/ photos /: companyiD / new"Antworten:
Reagiere auf Router v3
React Router analysiert den Standort bereits für Sie und übergibt ihn als Requisiten an Ihre RouteComponent . Sie können auf den Abfrageteil (nach? In der URL) über zugreifen
Wenn Sie nach den Pfadparameterwerten suchen, die im Router durch einen Doppelpunkt (:) getrennt sind, können Sie über diese zugreifen
Dies gilt für späte React Router v3-Versionen (nicht sicher, welche). Es wurde berichtet, dass ältere Router-Versionen verwendet werden
this.props.params.redirectParam
.React Router v4 und React Router v5, allgemein
React Router v4 analysiert die Abfrage nicht mehr für Sie, sondern kann nur über darauf zugreifen
this.props.location.search
. Aus Gründen siehe die Antwort von nbeuchat .ZB mit importierter qs- Bibliothek, wie
qs
Sie es tun könntenEine andere Bibliothek wäre eine Abfragezeichenfolge . In dieser Antwort finden Sie weitere Ideen zum Parsen der Suchzeichenfolge. Wenn Sie keine IE-Kompatibilität benötigen , können Sie diese auch verwenden
Für Funktionskomponenten würden Sie durch
this.props.location
den Hook useLocation ersetzen . Beachten Sie, dass Sie verwendenwindow.location.search
können, dies ermöglicht jedoch nicht das Auslösen des React-Renderings bei Änderungen. Wenn Ihre (nicht funktionsfähige) Komponente kein direktes untergeordnetes Element von a istSwitch
, müssen Sie withRouter verwenden, um auf die vom Router bereitgestellten Requisiten zuzugreifen.Allgemeines
Vorschlag von nizam.sp zu tun
wird auf jeden Fall hilfreich sein.
quelle
console.dir()
wegen Warnhinweis zu verwenden ... zumindest :)react-router-dom
ich verwendenwithRouter
, um diese Arbeit zu machen!Reagiere auf Router v4
Verwenden von
component
Die Komponente wird automatisch mit den Routenrequisiten gerendert.
Verwenden von
render
Routenrequisiten werden an die Renderfunktion übergeben.
quelle
query params
aktuelle URL meiner App in einer untergeordneten Komponente mit React Router v4. Wenn Sie nach der suchenquery params
, wurde diese.props.location.query in React Router 4 entfernt (derzeit unter Verwendung von v4.1.1). Siehe diese Antwort: stackoverflow.com/a/43630848/1508105/users/?q=...
aber Sie könnten haben/user?q=...
. Sie solltenthis.props.location.search
React Router v4 verwenden und die Ergebnisse selbst analysieren, wie in meiner Antwort unten erläutert.this.props.location.search
ist nicht vorhanden.Reagiere auf Router v3
Mit React Router v3 können Sie
this.props.location.search
Abfragezeichenfolgen von (? Qs1 = naisarg & qs2 = parmar) abrufen. Zum Beispiel mitlet params = queryString.parse(this.props.location.search)
würde geben{ qs1 : 'naisarg', qs2 : 'parmar'}
Reagiere auf Router v4
Mit React Router v4 existiert das
this.props.location.query
nicht mehr. Sie müssenthis.props.location.search
stattdessen die Abfrageparameter entweder selbst oder mithilfe eines vorhandenen Pakets wie zquery-string
.Beispiel
Hier ist ein minimales Beispiel für die Verwendung von React Router v4 und der
query-string
Bibliothek.Rational
Das Team des React Routers, das die
query
Eigenschaft rational entfernt, lautet:Die vollständige Diskussion finden Sie auf GitHub .
quelle
Soweit ich weiß, gibt es drei Methoden, mit denen Sie das tun können.
1. Verwenden Sie einen regulären Ausdruck, um die Abfragezeichenfolge abzurufen.
2.Sie können die Browser-API verwenden. Bild die aktuelle URL ist wie folgt:
wir wollen nur 123 bekommen;
Zuerst
Dann
3. Verwenden Sie eine dritte Bibliothek namens 'query-string'. Installieren Sie es zuerst
Importieren Sie es dann in die aktuelle Javascript-Datei:
Der nächste Schritt besteht darin, 'Token' in der aktuellen URL abzurufen. Gehen Sie wie folgt vor:
Ich hoffe es hilft.
Aktualisiert am 25/02/2019
http://www.google.com.au?app=home&act=article&aid=160990
Wir definieren eine Funktion, um die Parameter zu erhalten:
Wir können "Hilfe" bekommen durch:
quelle
React Router v4 hat das
props.location.query
Objekt nicht mehr (siehe Github- Diskussion). Die akzeptierte Antwort funktioniert also nicht für neuere Projekte.Eine Lösung für v4 ist eine externe Bibliothek verwenden Abfrage-String die analysieren
props.location.search
quelle
{'?foo': 'bar'}
var prefixed = qs.parse('?a=b&c=d', { ignoreQueryPrefix: true });
sollte es beheben. Beispiel hier gefunden: github.com/ljharb/qsBei Verwendung von React-Hooks besteht kein Zugriff auf
this.props.location
. Verwenden Siewindow
Objekt, um URL-Parameter zu erfassen .quelle
Reagiere auf Router v4
Bitte beachten Sie, dass es derzeit experimentell ist.
Überprüfen Sie die Browserkompatibilität hier: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/URLSearchParams#Browser_compatibility
quelle
Sie können den React-Router überprüfen. In einfachen Worten können Sie den Code verwenden, um Abfrageparameter abzurufen, solange Sie dies in Ihrem Router definiert haben:
quelle
props.params
ist für URL-Parameter (URL-Segment mit dem Präfix ':' im Reaktionsrouter),props.location.query
speichert Abfragezeichenfolgenparameter (nach dem '?') und ist das, was OP will.Reagiere auf Router 5.1+
5.1 führte verschiedene Haken ein
useLocation
unduseParams
das könnte hier von Nutzen sein.Beispiel:
Dann wenn wir besucht sagen
Sie könnten es wie abrufen
quelle
Wenn Ihr Router so ist
Sie werden diese ID so bekommen
quelle
Mit diesem Einzeiler können Sie ihn überall in React Hook und React Class Component mit einfachem JavaScript verwenden.
https://www.hunterisgod.com/?city=Leipzig
quelle
Wenn Sie nicht die
this.props
... erhalten, die Sie aufgrund der anderen Antworten erwartet haben, müssen Sie möglicherweise Folgendes verwendenwithRouter
( docs v4 ):quelle
Es fiel mir schwer, dieses Problem zu lösen. Wenn keine der oben genannten Funktionen funktioniert, können Sie dies stattdessen versuchen. Ich benutze die Create-React-App
Bedarf
React-Router-Dom ":" ^ 4.3.1 "
Lösung
An dem Ort, an dem der Router angegeben ist
Fügen Sie den Parameternamen hinzu, den Sie wie folgt übergeben möchten
Auf der Seite, auf der Sie einige / path rendern, können Sie dies angeben, um die Aufrufnummer des Parameternamens wie folgt anzuzeigen
Am Ende, wo Sie Standard exportieren
Denken Sie daran, den Import einzuschließen
Bei console.log (this.props) können Sie, was weitergegeben wurde. Habe Spaß!
quelle
RouteComponentProps<{id: number}>
React router
ab v4 gibt man das nicht mehrquery params
direkt in seinemlocation
objekt. Der Grund dafür istWenn Sie dies aufgenommen haben, ist es nur sinnvoller, location.search in Ihren Ansichtskomponenten zu analysieren, die ein Abfrageobjekt erwarten.
Sie können dies generisch tun, indem Sie das
withRouter
from überschreibenreact-router
likecustomWithRouter.js
quelle
quelle
Vielleicht etwas spät, aber dieser Reaktions-Hook kann Ihnen helfen, Werte in der URL-Abfrage abzurufen / festzulegen: abzurufen https://github.com/rudyhuynh/use-url-search-params (von mir geschrieben).
Es funktioniert mit oder ohne
react-router
. Unten finden Sie ein Codebeispiel für Ihren Fall:quelle
this.props.params.your_param_name
wird funktionieren.Auf diese Weise erhalten Sie die Parameter aus Ihrer Abfragezeichenfolge.
Bitte tun Sie dies
console.log(this.props);
, um alle Möglichkeiten zu erkunden.quelle
In der Komponente, in der Sie auf die Parameter zugreifen müssen, die Sie verwenden können
this.props.location.state.from.search
Dadurch wird die gesamte Abfragezeichenfolge angezeigt (alles nach dem
?
Zeichen).quelle
Angenommen, es gibt eine URL wie folgt
Wenn wir den Code aus dieser URL extrahieren möchten, funktioniert die folgende Methode.
quelle
In React Router v4 ist nur withRoute richtig
Sie können über die withRouter-Komponente höherer Ordnung auf die Eigenschaften des Verlaufsobjekts und die Übereinstimmung des nächsten zugreifen. withRouter übergibt aktualisierte Übereinstimmungs-, Speicherort- und Verlaufs-Requisiten beim Rendern an die umschlossene Komponente.
https://reacttraining.com/react-router/web/api/withRouter
quelle
Ich habe ein externes Paket namens query-string verwendet, um URL-Parameter wie folgt zu analysieren.
quelle
Wenn Sie mit React Route Dom arbeiten, wird das Objekt für die Übereinstimmung leer. Wenn Sie jedoch den folgenden Code ausführen, gilt dies sowohl für die es6-Komponente als auch direkt für die Funktionskomponente
Auf diese Weise können Sie Requisiten erhalten und Parameter und Profil-IDs abgleichen
Dies funktionierte für mich nach vielen Recherchen zur es6-Komponente.
quelle
Oder vielleicht so etwas?
quelle
Sie können einen einfachen Hook zum Extrahieren von Suchparametern aus dem aktuellen Speicherort erstellen:
dann könnten Sie es in Ihrer Funktionskomponente wie folgt verwenden:
quelle
quelle
quelle
einfachste Lösung!
im Routing:
im Reaktionscode:
quelle