Eu sou novo no Next.js e gostaria de saber como redirecionar da página inicial ( / ) para / hello-nextjs, por exemplo. Depois que o usuário carrega uma página e depois determina se o caminho === / redireciona para / hello-nextjs
No react-router , fazemos algo como:
<Switch>
<Route path="/hello-nextjs" exact component={HelloNextjs} />
<Redirect to="/hello-nextjs" /> // or <Route path="/" exact render={() => <Redirect to="/hello-nextjs" />} />
</Switch>
Respostas:
Em
next.js
você pode redirecionar depois que a página é carregada usandoRouter
ex:Ou com ganchos:
fonte
Existem três abordagens.
1.Redirecionar eventos ou funções:
2. Redirecionar com ganchos:
Redirecionar com link:
com base nos documentos do Nextjs, a
<a>
tag é necessária no link para itens como abrir em uma nova guia!Existem algumas outras opções para roteamento do lado do servidor
asPath
. em todas as abordagens descritas, você pode adicionar o asPath para redirecionar o cliente e o servidor.fonte
A resposta do @ Nico resolve o problema quando você está usando aulas.
Se você estiver usando a função, não poderá usar
componentDidMount
. Em vez disso, você pode usar Ganchos de reaçãouseEffect
.Em 2019, a React introduziu ganchos. que são muito mais rápidos e eficientes que as classes.
fonte
<Switch>
que você está usandoReact-router
. Even<Switch>
não fornece nenhum código de status 303, 302. Apenas redirecionaExemplo semioficial
Os
with-cookie-auth
exemplos são redirecionadosgetInitialProps
. Não tenho certeza se é um padrão válido ou ainda não, mas aqui está o código:Ele lida com o servidor e com o cliente. A
fetch
chamada é aquela que realmente obtém o token de autenticação; talvez você queira encapsular isso em uma função separada.O que eu recomendaria
1. Redirecione na renderização do servidor (evite flash durante o SSR)Este é o caso mais comum. Você deseja redirecionar neste momento para evitar que a página inicial pisque no primeiro carregamento.
2. Redirecionar em componentDidMount (útil quando o SSR está desativado, por exemplo, no modo estático)Este é um substituto para a renderização do lado do cliente.
Não pude evitar exibir a página inicial no modo estático. Adicione este ponto, porque você não pode redirecionar durante a compilação estática, mas parece melhor do que as abordagens usuais. Vou tentar editar à medida que progredir.
Exemplo completo está aqui
Problema relevante, que infelizmente acaba com uma resposta apenas do cliente
fonte
redirect-to.ts
_app.tsx
fonte
getInitialProps
. @Afsanefda deve ser a resposta aceita. E você também está usando o next.js, que não precisa de um roteador de reação para organizar as rotas. Em seguida, já lida com isso por padrão.Router.push
deve entrar nos métodos de ciclo de vida do componenteEu implementei essa funcionalidade no meu
Next.JS
aplicativo, definindo uma página raiz para redirecionar o servidor e o cliente. Aqui está o código para a página raiz:fonte