J'ai ce qui suit:
<Route name="app" path="/" handler={App}>
<Route name="dashboards" path="dashboards" handler={Dashboard}>
<Route name="exploreDashboard" path="exploreDashboard" handler={ExploreDashboard} />
<Route name="searchDashboard" path="searchDashboard" handler={SearchDashboard} />
<DefaultRoute handler={DashboardExplain} />
</Route>
<DefaultRoute handler={SearchDashboard} />
</Route>
Lors de l'utilisation de DefaultRoute, SearchDashboard effectue un rendu incorrect car tout * Dashboard doit être rendu dans Dashboard.
Je voudrais que mon DefaultRoute dans le "App" Route pour pointer vers la Route "searchDashboard". Est-ce quelque chose que je peux faire avec React Router, ou devrais-je utiliser du Javascript normal (pour une redirection de page) pour cela?
Fondamentalement, si l'utilisateur accède à la page d'accueil, je souhaite plutôt l'envoyer au tableau de bord de recherche. Je suppose donc que je recherche une fonctionnalité de React Router équivalente àwindow.location.replace("mygreathostname.com/#/dashboards/searchDashboard");
javascript
routes
reactjs
url-redirection
react-router
Matthew Herbst
la source
la source
Réponses:
Vous pouvez utiliser Redirect au lieu de DefaultRoute
Mettez à jour le 09/08/2019 pour éviter les problèmes d'actualisation, utilisez plutôt ceci, grâce à Ogglas
la source
from='/a' to='/a/:id'
, vous devrez utiliser<Switch>
pour inclure votre composant<Redirect>
et<Route>
de react-router. Détails voir doc<Redirect exact from="/" to="/adaptation" />
exact
drapeau. La réponse d'acceptation est manquante, donc elle correspond à [presque] n'importe quelle route.Le problème avec l'utilisation
<Redirect from="/" to="searchDashboard" />
est que si vous avez une URL différente, par exemple/indexDashboard
et que l'utilisateur clique sur actualiser ou reçoit une URL qui lui est envoyée, l'utilisateur sera de/searchDashboard
toute façon redirigé vers .Si vous ne voulez pas que les utilisateurs puissent actualiser le site ou envoyer des URL, utilisez ceci:
Utilisez ceci si
searchDashboard
est derrière la connexion:la source
J'essayais à tort de créer un chemin par défaut avec:
Mais cela crée deux chemins différents qui rendent le même composant. Non seulement cela est inutile, mais cela peut causer des problèmes dans votre interface utilisateur, c'est-à-dire lorsque vous stylisez des
<Link/>
éléments en fonction dethis.history.isActive()
.La bonne façon de créer une route par défaut (qui n'est pas la route d'index) est d'utiliser
<IndexRedirect/>
:Ceci est basé sur react-router 1.0.0. Voir https://github.com/rackt/react-router/blob/master/modules/IndexRedirect.js .
la source
Route
à quelque chose qui est déjà géré par votreIndexRoute
?/
lieu d'avoir à rediriger vers par exemple/home
.<IndexRoute>
après tout. Désolé pour le bruit. stackoverflow.com/questions/32706913/… github.com/reactjs/react-router/blob/master/docs/guides/…La réponse de Jonathan ne semblait pas fonctionner pour moi. J'utilise React v0.14.0 et React Router v1.0.0-rc3. Cela a fait:
<IndexRoute component={Home}/>
.Donc, dans le cas de Matthew, je crois qu'il voudrait:
<IndexRoute component={SearchDashboard}/>
.Source: https://github.com/rackt/react-router/blob/master/docs/guides/advanced/ComponentLifecycle.md
la source
SearchDashboard
sera le composant que vous verrez lorsque vous arrivez sur la page d'accueil, mais pas leDashboard
composant qui l'encapsule si vous accédez directement à/dashboard/searchDashboard
. React-router construit dynamiquement une hiérarchie de composants imbriqués en fonction des routes correspondant à l'URL, donc je pense que vous avez vraiment besoin d'une redirection ici.cela fera en sorte que lorsque vous chargerez le serveur sur l'hôte local, il vous dirigera vers / quelque chose
la source
MISE À JOUR : 2020
Au lieu d'utiliser la redirection, ajoutez simplement plusieurs routes dans le
path
Exemple:
la source
J'ai rencontré un problème similaire; Je voulais un gestionnaire d'itinéraire par défaut si aucun des gestionnaires d'itinéraire ne correspondait.
Mes solutions consistent à utiliser un caractère générique comme valeur de chemin. c.-à-d. Assurez-vous également qu'il s'agit de la dernière entrée dans la définition de votre itinéraire.
la source
Pour ceux qui arrivent en 2017, voici la nouvelle solution avec
IndexRedirect
:la source
la source
DefaultRoute
àreact-router
v4?<Route exact path="/" component={Home}/>
. reacttraining.com/react-router/web/example/basicLa méthode préférée consiste à utiliser le composant IndexRoutes du routeur de réaction
Vous l'utilisez comme ceci (extrait de la documentation du routeur de réaction liée ci-dessus):
la source
Vous l'utilisez comme ceci pour rediriger sur une URL particulière et rendre le composant après la redirection de l'ancien routeur vers le nouveau routeur.
la source