J'utilise le code de navigation simple suivant
<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'>
L'URL change mais la vue ne change pas. Cela change cependant lorsque j'actualise la page ou que je vais manuellement à cette URL.
Vous pouvez également utiliser le:
import { withRouter } from 'react-router-dom';
Et puis sur votre défaut d'exportation, vous faites comme ceci:
export default withRouter(connect(mapStateToProps, {})(Layout));
Parce que lorsque vous avez une connexion d'exportation, vous devez indiquer que ce composant utilisera le routeur.
En effet, la méthode react-redux
connect
implémente shouldComponentUpdate
, ce qui entraînera le rendu du composant not lorsque les accessoires ne sont pas modifiés. Et ceci est en conflit maintenant avec react-router 4.
Pour l'éviter, vous pouvez passer de {pure: false}
à connect
comme décrit dans la section de dépannage de react-redux .
Une autre méthode consiste à utiliser withRouter
HOC ou à transmettre location
prop comme décrit dans DOCS .
J'avais mes liens Navlinks dans un composant sans état (ou composant muet) et un conteneur pour contrôler l'état d'effondrement de ma barre de navigation.
après avoir basculé le conteneur navbar de PureComponent
à Component
it, le problème a été résolu pour moi.
J'ai rencontré ce problème. Je le résous en ajoutant la clé d'attribut au composant. Le commutateur avec la valeur est un chemin d'accès et une recherche d'emplacement.