Ändern der URL in react-router v4 ohne Verwendung von Redirect oder Link [duplizieren]

8

Ich verwende react-router v4 und Material-Ui in meiner React-App. Ich habe mich gefragt, wie man die URL ändert, wenn man innerhalb von GridList auf ein GridTile klickt .

Meine ursprüngliche Idee war, einen Handler für onTouchTap zu verwenden. Die einzige Möglichkeit, die Umleitung zu sehen, besteht jedoch darin, die Komponenten Redirect oder Link zu verwenden. Wie kann ich die URL ändern, ohne diese beiden Komponenten zu rendern?

Ich habe versucht, this.context.router.push('/foo') , aber es scheint nicht zu funktionieren.

    
Alex 16.02.2017, 10:55
quelle

4 Antworten

7

Probieren Sie das aus,

%Vor%

Warnung funktioniert für Versionen vor Version 4

und

%Vor%

für v4 und höher

    
Ayush Sharma 16.02.2017, 11:09
quelle
25

Ich benutze dies um mit React Router v4 umzuleiten:

%Vor%

Ich hoffe, es funktioniert für Sie;)

    
Jobsamuel 08.04.2017 18:40
quelle
2
  

Reagieren Router v4

Es gibt ein paar Dinge, die ich brauchte, damit das reibungslos funktionierte.

Die Dokumentseite des Auth-Workflows enthält eine Menge von dem, was benötigt wird. p>

Allerdings hatte ich drei Probleme

  1. Woher kommt die props.history ?
  2. Wie übergebe ich es an meine Komponente, die nicht direkt in der Route -Komponente
  3. liegt
  4. Was ist, wenn ich andere props möchte?

Ich endete mit:

  1. Option 2 von eine Antwort zu 'Programmgesteuertes Navigieren mit react router' - dh <Route render> was dir props.history bringt, was dann an die Kinder weitergegeben werden kann.
  2. Verwenden Sie render={routeProps => <MyComponent {...props} {routeProps} />} , um andere props aus diese Antwort auf "react-router - Übergeben von Requisiten an die Handler-Komponente"

N.B. Bei der Methode render müssen Sie die Requisiten explizit von der Komponente Route durchlaufen. Außerdem möchten Sie aus Leistungsgründen render und nicht component verwenden ( component erzwingt jedes Mal ein erneutes Laden).

%Vor%

Eines der verwirrenden Dinge, die ich fand, ist, dass in einigen der React Router v4-Dokumente MyComponent = ({ match }) ie Objektdestrukturierung , was zunächst bedeutete, dass Route drei Props, match , location und history

Ich denke, einige der anderen Antworten gehen davon aus, dass alles über JavaScript-Klassen erfolgt.

Hier ist ein Beispiel, und wenn Sie kein props durchreichen müssen, können Sie einfach component

verwenden %Vor%     
icc97 27.05.2017 22:31
quelle
0

So habe ich Ähnliches gemacht. Ich habe Kacheln, die Thumbnails zu YouTube-Videos sind. Wenn ich auf die Kachel klicke, werde ich auf eine Player-Seite weitergeleitet, auf der die Video-ID verwendet wird, um das richtige Video auf die Seite zu rendern.

%Vor%

ETA: Entschuldigung, ich habe gerade bemerkt, dass Sie aus irgendeinem Grund die LINK- oder REDIRECT-Komponenten nicht verwenden wollten. Vielleicht hilft meine Antwort noch irgendwie. ; )

    
Barton Young 20.07.2017 18:21
quelle