Tengo lo siguiente:
<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>
Cuando se usa DefaultRoute, SearchDashboard se procesa incorrectamente ya que cualquier * Dashboard debe procesarse dentro de Dashboard.
Me gustaría que mi DefaultRoute dentro de la ruta de la "aplicación" apunte a la ruta "searchDashboard". ¿Es esto algo que puedo hacer con React Router, o debería usar Javascript normal (para una redirección de página) para esto?
Básicamente, si el usuario va a la página de inicio, quiero enviarlo al panel de búsqueda. Así que supongo que estoy buscando una función de React Router equivalente awindow.location.replace("mygreathostname.com/#/dashboards/searchDashboard");
javascript
routes
reactjs
url-redirection
react-router
Matthew Herbst
fuente
fuente
Respuestas:
Puede utilizar Redirect en lugar de DefaultRoute
Actualice 2019-08-09 para evitar problemas con la actualización, use esto en su lugar, gracias a Ogglas
fuente
from='/a' to='/a/:id'
, deberá usar<Switch>
para incluir su componente<Redirect>
y<Route>
de react-router. Detalles ver documento<Redirect exact from="/" to="/adaptation" />
exact
bandera. Falta la respuesta aceptada, por lo que coincide con [casi] cualquier ruta.El problema con el uso
<Redirect from="/" to="searchDashboard" />
es que si tiene una URL diferente, digamos,/indexDashboard
y el usuario presiona actualizar o recibe una URL, el usuario será redirigido a de/searchDashboard
todos modos.Si no desea que los usuarios puedan actualizar el sitio o enviar URL, use esto:
Use esto si
searchDashboard
está detrás del inicio de sesión:fuente
Intentaba incorrectamente crear una ruta predeterminada con:
Pero esto crea dos caminos diferentes que representan el mismo componente. Esto no solo es inútil, sino que puede causar fallas en su interfaz de usuario, es decir, cuando está diseñando
<Link/>
elementos basados enthis.history.isActive()
.La forma correcta de crear una ruta predeterminada (que no sea la ruta de índice) es usar
<IndexRedirect/>
:Esto se basa en react-router 1.0.0. Consulte https://github.com/rackt/react-router/blob/master/modules/IndexRedirect.js .
fuente
Route
a algo que ya está manejado por ustedIndexRoute
?/
lugar de tener que redirigir a, por ejemplo/home
.<IndexRoute>
después de todo. Perdón por el ruido. stackoverflow.com/questions/32706913/… github.com/reactjs/react-router/blob/master/docs/guides/…La respuesta de Jonathan no pareció funcionar para mí. Estoy usando React v0.14.0 y React Router v1.0.0-rc3. Esto hizo:
<IndexRoute component={Home}/>
.Entonces, en el caso de Matthew, creo que él querría:
<IndexRoute component={SearchDashboard}/>
.Fuente: https://github.com/rackt/react-router/blob/master/docs/guides/advanced/ComponentLifecycle.md
fuente
SearchDashboard
será el componente que verá cuando llegue a la página de inicio, pero no elDashboard
componente que lo envuelve si va directamente a/dashboard/searchDashboard
. React-router construye dinámicamente una jerarquía de componentes anidados en función de las rutas que coinciden con la URL, por lo que creo que realmente necesitas una redirección aquí.esto hará que cuando cargue el servidor en el host local, lo redireccionará a / algo
fuente
ACTUALIZACIÓN : 2020
En lugar de usar Redirect, simplemente agregue varias rutas en el
path
Ejemplo:
fuente
Me encontré con un problema similar; Quería un controlador de ruta predeterminado si ninguno de los controladores de ruta coincidía.
Mi solución es usar un comodín como valor de ruta. es decir, también asegúrese de que sea la última entrada en la definición de sus rutas.
fuente
Para aquellos que llegan al 2017, esta es la nueva solución con
IndexRedirect
:fuente
fuente
DefaultRoute
enreact-router
v4?<Route exact path="/" component={Home}/>
. reacttraining.com/react-router/web/example/basicEl método preferido es utilizar el componente IndexRoutes del enrutador react
Lo usa así (tomado de los documentos del enrutador de reacción vinculados anteriormente):
fuente
Lo usa así para redirigir a una URL en particular y representar el componente después de redirigir del enrutador antiguo al enrutador nuevo.
fuente