Je suis nouveau dans Next.js et je me demande comment rediriger de la page de démarrage ( / ) vers / hello-nextjs par exemple. Une fois que l'utilisateur a chargé une page et après cela, déterminez si le chemin === / redirige vers / hello-nextjs
Dans react-router, nous faisons quelque chose comme:
<Switch>
<Route path="/hello-nextjs" exact component={HelloNextjs} />
<Redirect to="/hello-nextjs" /> // or <Route path="/" exact render={() => <Redirect to="/hello-nextjs" />} />
</Switch>
Réponses:
Dans
next.js
vous pouvez rediriger après le chargement de la page en utilisantRouter
ex:Ou avec des crochets:
la source
Il existe trois approches.
1. rediriger les événements ou les fonctions:
2. rediriger avec des crochets:
3. rediriger avec Link:
basé sur les documents Nextjs, le
<a>
tag est nécessaire à l'intérieur du lien pour des choses comme ouvrir dans un nouvel onglet!Il existe d'autres options pour le routage côté serveur
asPath
. dans toutes les approches décrites, vous pouvez ajouter asPath pour rediriger le côté client et le côté serveur.la source
La réponse de @ Nico résout le problème lorsque vous utilisez des classes.
Si vous utilisez une fonction que vous ne pouvez pas utiliser
componentDidMount
. Au lieu de cela, vous pouvez utiliser React HooksuseEffect
.En 2019, React a introduit des crochets. qui sont beaucoup plus rapides et efficaces que les classes.
la source
<Switch>
que vous utilisezReact-router
. Même<Switch>
ne fournit aucun code d'état 303, 302. Redirige simplementExemple semi-officiel
Les
with-cookie-auth
exemples redirigent versgetInitialProps
. Je ne sais pas si c'est un modèle valide ou pas encore, mais voici le code:Il gère à la fois côté serveur et côté client. L'
fetch
appel est celui qui obtient réellement le jeton d'authentification, vous voudrez peut-être l'encapsuler dans une fonction distincte.Ce que je conseillerais à la place
1. Rediriger le rendu côté serveur (éviter le flash pendant la SSR)C'est le cas le plus courant. Vous souhaitez rediriger à ce stade pour éviter que la page initiale ne clignote lors du premier chargement.
2. Rediriger dans componentDidMount (utile lorsque SSR est désactivé, par exemple en mode statique)Il s'agit d'un remplacement pour le rendu côté client.
Je ne pouvais pas éviter de flasher la page initiale en mode statique, ajoutez ce point, car vous ne pouvez pas rediriger pendant la construction statique, mais cela semble mieux que les approches habituelles. Je vais essayer d'éditer au fur et à mesure que je progresse.
L'exemple complet est ici
Problème pertinent, qui se termine malheureusement par une réponse du client uniquement
la source
redirect-to.ts
_app.tsx
la source
getInitialProps
. @Afsanefda devrait être la réponse acceptée. Et vous utilisez également next.js, vous n'avez pas besoin de réagir au routeur pour organiser les itinéraires. Next gère déjà cela par défaut.Router.push
devrait plutôt aller dans les méthodes de cycle de vie des composantsJ'ai implémenté cette fonctionnalité dans mon
Next.JS
application en définissant une page racine qui fait la redirection côté serveur et côté client. Voici le code de la page racine:la source