2017-02-08 3 views
1

Ich benutze React-Router 3.0.2 und versuchen, Router-Pfad mit Abfrage-String zu konfigurieren. Dies ist, wie ich meinen Router konfiguriert haben:Abfrage String React-Router Pfad

<Router history={browserHistory}> 
       <Route path="abc/login.do" component={LoginComponent}/> 
       <Route path="abc/publicLoginID.do?phase=def" component={VerifyComponent} /> 
       <Route path="abc/publicLoginID.do?phase=ghi" component={ImageComponent}/> 
       <Route path="*" component={LoginComponent}/> 
</Router> 

Ich verstehe das nicht der richtige Weg ist, Query-String angeben, in „Route“ (?). Wie stelle ich sicher, dass, wenn ein Benutzer "http://localhost:3000/abc/publicLoginID.do?phase=def" in der URL eingibt, "VerifyComponent" angezeigt wird, und wenn er "http://localhost:3000/abc/publicLoginID.do?phase=ghi" in der URL eingibt, wird "ImageComponent" angezeigt.

Ich habe einige Fälle hier überprüft: react-router match query string und Querystring in react-router, aber nicht in der Lage, herauszufinden, wie es funktioniert.

+0

Sie eine Wrapper-Komponente schreiben kann, die schaltet, was auf der Grundlage der Abfrageparameter –

Antwort

2

Sie können eine Wrapper-Komponente schreiben, die schaltet, was auf der Grundlage der Abfrageparameter machen

<Router history={browserHistory}> 
    <Route path="abc/login.do" component={LoginComponent}/> 
    <Route path="abc/publicLoginID.do" component={WrapperComponent} /> 
    <Route path="*" component={LoginComponent}/> 
</Router> 

//WrapperComponent 

WrapperComponent = (props) => { 
    if (props.location.query.phase==="def"){return <VerifyComponent {...props}/>} 
    if (props.location.query.phase==="ghi"){return <ImageComponent {...props}/>} 
} 
+0

Dank machen @UG_ , es funktionierte. Meine einzige Sorge ist, wenn wir einen Router wie diesen haben ' Benötigen wir 2 Wrapper-Komponenten, eine für login.do und eine andere für publicLoginID.do? – abhi

+0

ja, im Idealfall würde ich zwei Routen getrennt behandeln. –

+0

Sie können auch alles in eine Komponente einfügen und basierend auf Routen wechseln, was aber den Zweck der Verwendung von react-router vereitelt –