2016-06-24 21 views
1

In meiner Stammkomponente Client.js, ich habe folgendes ein:Warum funktioniert der React-Router Link nicht (ReactJS + Redux)?

render(
    <div> 
    <Provider store={store}> 
     <Router history={hashHistory}> 
     <Route 
      component={MainPage} 
      path="/" 
     > 
      <Route 
       component={HomePage} 
       path="Home" 
      /> 
     </Route> 
     </Router> 
    </Provider> 
    </div>, 
    document.getElementById('app') 
) 

Und in meiner Rückkehr(), MainPage.js:

 <RaisedButton 
      containerElement={<Link to={`Home`}/>} 
      label="Button1" 
      labelColor='#88898C' 
      labelStyle={{textTransform:'intial'}} 
      style={styles.signIn} 
     /> 

und außerhalb von return() von Mainpage Js:

 export default connect(
      mapStateToProps, mapDispatchToProps 
     )(MainPage.js) 

schließlich in meinem HomePage.js,

return(
    <div>Hello World</div> 
) 

und außerhalb von return() von HomePage.js:

 export default connect(
      mapStateToProps, mapDispatchToProps 
     )(HomePage.js) 

MainPage.js zeigt und wenn ich auf der klicken, wird der Link (URL) ändert sich richtig zu 'Home', aber die HomePage.js ist wird nicht gerendert (kommt hoch und ersetzt die MainPage.js). Jede Einsicht oder Anleitung zu dem Thema wird sehr geschätzt. Vielen Dank im Voraus.

NEW EDIT **:

render(
    <div> 
    <Provider store={store}> 
     <Router history={hashHistory}> 
     <Route 
      component ={Login} 
      path='/' 
     /> 
     <Route 
      component={App} 
      path="Home" 
     > 
      <IndexRoute 
      component={MainCard} 
      /> 
      <Route 
      component={FirstPage} 
      path="/Discussion" 
      /> 
      <Route 
      component={SecondPage} 
      path="/Team 1" 
      /> 
      <Route 
      component={ThirdPage} 
      path="/Team 2" 
      /> 
      <Route 
      component={ThreadPage} 
      path="/discussion/:id" 
      /> 
      <Route 
      component={StaticPage} 
      path="/Static" 
      /> 
     </Route> 
     </Router> 
    </Provider> 
    </div>, 
    document.getElementById('app') 
) 
+0

Vielleicht MainPage und HomePage in Ihrer Verbindung sollte ohne 'js' sein: wie' export default connect (mapStateToProps, mapDispatchToProps) (MainPage) ' –

Antwort

1

wenn Sie Mainpage von HomePage ersetzen wollen, gibt es Möglichkeiten,

Ort "Home" Route auf der gleichen Ebene

<Router history={hashHistory}> 
     <Route component={MainPage} path="/" /> 
     <Route component={HomePage} path="Home" /> 
</Router> 

mit Verschachtelung

import {IndexRoute, ...} from 'react-router'; 

<Router history={hashHistory}> 
    <Route component={App} path="/" > 
     <IndexRoute component={MainPage} /> 
     <Route component={HomePage} path="Home" /> 
     <Route component={AnotherPage} path="Page" /> 
    </Route> 
</Router> 

dann in App-Komponente, Platz this.props.children, wird es Platz für Komponenten sein.


auch Sie named components verwenden können, insted this.props.children. Es erlaubt Ihnen, mehr als eine Komponente pro Route zu platzieren.

<Router history={hashHistory}> 
    <Route component={App} path="/" > 
     <IndexRoute components={{main:MainPage, left:LeftContent}} /> 
     <Route path="Home" components={{main:HomePage, left:LeftContent}} /> 
     <Route path="Page"components={{main:AnotherPage}} /> 
    </Route> 
</Router> 

dann in App-Komponente, legen this.props.main and this.props.left, wird es Platz für Komponenten sein.

+0

Vielen Dank, aber ich verstehe nicht die App. Könnten Sie zeigen, wie App-Komponente aussehen würde? –

+0

Ich teste die erste Methode aus, aber wenn auf die Schaltfläche geklickt wird, heißt es 'Kann Property' Property 'von undefined nicht lesen und meine' HomePage.js 'hat {this.props.children} und verwendet zu tun nur {this.props.todos} und würde funktionieren, mit der Funktion mapStateToProps (state) {return state}. Aber jetzt bekomme ich diesen TypeError. Was könnte das Problem sein?Müsste ich Zustände in mapStateToProps wie folgt definieren: todos: state.todos? –

+0

Beispiele für App-Komponente https://gist.github.com/umbertoo/9ad55cfd75b7f3432a9ba900c8af80ae –

Verwandte Themen