Eu tenho o seguinte:
<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>
Ao usar o DefaultRoute, SearchDashboard é renderizado incorretamente, pois qualquer * Dashboard precisa ser renderizado dentro do Dashboard.
Eu gostaria que meu DefaultRoute dentro da rota "app" apontasse para a rota "searchDashboard". É algo que posso fazer com o React Router ou devo usar Javascript normal (para um redirecionamento de página) para isso?
Basicamente, se o usuário for para a página inicial, quero enviá-lo para o painel de pesquisa. Acho que estou procurando por um recurso React Router equivalente awindow.location.replace("mygreathostname.com/#/dashboards/searchDashboard");
javascript
routes
reactjs
url-redirection
react-router
Matthew Herbst
fonte
fonte
Respostas:
Você pode usar Redirect em vez de DefaultRoute
Atualize 09-08-2019 para evitar problemas com a atualização, em vez disso, graças à Ogglas
fonte
from='/a' to='/a/:id'
, você precisará usar<Switch>
para incluir seu componente<Redirect>
e<Route>
do roteador react. Detalhes, ver doc<Redirect exact from="/" to="/adaptation" />
exact
bandeira. A resposta aceita está faltando, portanto, corresponde a [quase] qualquer rota.O problema com o uso
<Redirect from="/" to="searchDashboard" />
é se você tiver uma URL diferente, digamos,/indexDashboard
e o usuário clicar em atualizar ou receber uma URL enviada para ele, o usuário será redirecionado de/searchDashboard
qualquer maneira.Se você não deseja que os usuários atualizem o site ou enviem URLs, use:
Use se
searchDashboard
estiver atrás de login:fonte
Eu estava tentando criar um caminho padrão incorretamente com:
Mas isso cria dois caminhos diferentes que renderizam o mesmo componente. Isso não só é inútil, mas pode causar falhas em sua IU, ou seja, quando você está estilizando
<Link/>
elementos com base emthis.history.isActive()
.A maneira certa de criar uma rota padrão (que não é a rota do índice) é usar
<IndexRedirect/>
:Isso é baseado no react-router 1.0.0. Consulte https://github.com/rackt/react-router/blob/master/modules/IndexRedirect.js .
fonte
Route
a algo que já é gerenciado por vocêIndexRoute
?/
vez de ter que redirecionar para, por exemplo/home
.<IndexRoute>
afinal. Desculpe pelo barulho. stackoverflow.com/questions/32706913/… github.com/reactjs/react-router/blob/master/docs/guides/…A resposta de Jonathan não pareceu funcionar para mim. Estou usando o React v0.14.0 e o React Router v1.0.0-rc3. Isso fez:
<IndexRoute component={Home}/>
.Portanto, no caso de Matthew, acredito que ele desejaria:
<IndexRoute component={SearchDashboard}/>
.Fonte: https://github.com/rackt/react-router/blob/master/docs/guides/advanced/ComponentLifecycle.md
fonte
SearchDashboard
será o componente que você verá quando chegar à página inicial, mas não oDashboard
componente que a envolve se for diretamente para/dashboard/searchDashboard
. O React-router constrói dinamicamente uma hierarquia de componentes aninhados com base nas rotas correspondidas pela URL, então acho que você realmente precisa de um redirecionamento aqui.isso fará com que quando você carregar o servidor no host local, ele irá redirecioná-lo para / algo
fonte
ATUALIZAÇÃO : 2020
Em vez de usar Redirecionar, basta adicionar várias rotas no
path
Exemplo:
fonte
Eu tive um problema semelhante; Eu queria um manipulador de rota padrão se nenhum dos manipuladores de rota correspondesse.
Minhas soluções são usar um caractere curinga como o valor do caminho. ou seja, certifique-se também de que é a última entrada em sua definição de rotas.
fonte
Para quem chega em 2017, esta é a nova solução com
IndexRedirect
:fonte
fonte
DefaultRoute
noreact-router
v4?<Route exact path="/" component={Home}/>
. reacttraining.com/react-router/web/example/basicO método preferencial é usar o componente Reac router IndexRoutes
Você o usa assim (retirado dos documentos do roteador react vinculados acima):
fonte
Você o usa assim para redirecionar em uma URL específica e renderizar o componente após redirecionar do roteador antigo para o novo.
fonte