Je suis nouveau à React développement et je ne sais pas comment gérer cela.React-router - Rediriger sur la charge?
J'ai une application simple avec les routes, il ressemble à ceci:
<Router>
<div>
<Route path="/" component={MainComponent} />
<Route path="/dashboard" component={DashboardComponent} />
<Route path="/users" component={UsersComponent} />
<Route path="/admin" component={AdminComponent} />
</div>
</Router>
Quand je vais à localhost: 3000/myApp/index.html mes MainComponent
charges comme prévu, il détient la mise en page principale du site , navigation et ainsi de suite.
Ensuite, je dois cliquer sur « Dashboard » pour passer DashboardComponent
, les « utilisateurs » de passer à UsersComponent
et « Admin » pour charger AdminComponent
, ceux-ci sont chargés à côté de la navigation à partir MainComponent
.
Il va comme ceci:
localhost:3000/myApp = MainComponent
localhost:3000/dashboard = MainComponent + DashboardComponent
localhost:3000/users = MainComponent + UsersComponent
localhost:3000/admin = MainComponent + AdminComponent
Ce que je veux atteindre est de ne jamais charger MainComponent
seul (car il ne tient rien de navigation excepté), mais la charge DashboardComponent avec lui, donc tout fonctionnera comme avant avec un léger changement:
localhost:3000/myApp = MainComponent + DashboardComponent
Donc je suppose que je veux charger mon MainComponent, puis le tableau de bord sur init. Ce serait très bien si l'URL changeait automagiquement d'index.html à/dashboard aussi.
J'ai essayé de faire quelque chose comme ça dans mon MainComponent.jsx:
componentWillMount() {
<Redirect to="/dashboard" />
console.log("It works!");
}
Mais il ne fait rien, je pense que le routeur de premier exemple Application.jsx remplace simplement.
Je pense que je pourrais faire quelque chose de mal parce que j'ai l'impression que c'est l'une des choses les plus élémentaires avec le routeur mais je ne trouve aucune réponse et rien dans la documentation qui m'aiderait ici. Des indices?
tl; dr Je veux localhost:3000/myApp/index.html
pour me rediriger localhost:3000/dashboard
lorsque l'application démarre (je pense que cela devrait suffire pour que le routeur charge le bon composant).
reroutage ne fait rien (il n'y a pas d'erreurs, mais la route ne change pas):
<Router>
<div>
<Route path="/" component={MainComponent} />
<Route path="/dashboard" component={DashboardComponent} />
<Route path="/users" component={UsersComponent} />
<Route path="/admin" component={AdminComponent} />
<Route exact path="/" component={() => <Redirect to={DashboardComponent} /> } />
</div>
</Router>
Quel est le problème avec ' '? –
Daniel
Je suppose que vous utilisez le routeur de réaction v.4 Je crois que vous pouvez simplement créer une route qui rend un composant de redirection. ' } />' –
MEnf
@daniel Il chargera uniquement DashboardComponent sans MainComponent, tous les autres composants seront chargés sur haut de DashboardComponent au lieu de MainComponent si je comprends bien le routage. – Wordpressor