2017-05-10 3 views
9

ich folgenden einfachen nav CodeReagieren Router 4 nicht Ansicht auf dem Link aktualisieren, aber tut auf Refresh

<Router> 
    <Switch> 
    <Route exact path='/dashboard' component={Dashboard} /> 
    <Route path='/dashboard/accounts' component={AccountPage} /> 
    </Switch> 
</Router> 

<NavLink exact to={'/dashboard'} 
     disabled={this.props.item.disabled} 
     activeClassName='active'> 

<NavLink exact to={'/dashboard/accounts'} 
     disabled={this.props.item.disabled} 
     activeClassName='active'> 

Die URL ändert verwenden aber die Aussicht nicht. Es ändert sich jedoch, wenn ich die Seite aktualisiere oder manuell zu dieser URL gehe.

+0

ist Ihre Komponente react-redux connected component? –

+0

ja ........... – ilyo

+1

Dann denke ich, wahrscheinlich haben Sie das gleiche Problem, das ich in dieser Antwort beschrieben habe http://stackoverflow.com/questions/43892050/reac-router-4-x- privateroute-not-working-nach-verbindung-zu-redux/43892528 # answer-43892528 –

Antwort

7

Dies liegt daran, react-reduxconnect Methode shouldComponentUpdate implementiert, die Komponente wird nicht dazu führen zu machen, wenn Requisiten nicht ändern. Und das ist jetzt widersprüchlich mit react-router 4.

Um es zu vermeiden, können Sie {pure: false} zu connect wie in react-redux troubleshooting section beschrieben übergeben.

Eine andere Möglichkeit ist die Verwendung withRouter HOC oder pass location prop wie described in DOCS.

6

Sie auch die verwenden können:

import { withRouter } from 'react-router-dom'; 

Und dann auf Export Standard, tun Sie wie folgt aus:

export default withRouter(connect(mapStateToProps, {})(Layout)); 

Denn wenn Sie einen Export verbinden haben, können Sie, dass das zu sagen brauchen Komponente wird den Router verwenden.

Verwandte Themen