2017-07-14 1 views
0

Est-il possible de rediriger de manière conditionnelle un utilisateur vers une autre URL en fonction de la valeur du cookie? Je sais que je peux inspecter cookie sur un serveur & puis rediriger. Mais que dois-je faire si un utilisateur est passé par Link. (Je ne peux pas utiliser Route.push car il n'est pas défini sur le serveur) Y a-t-il un moyen d'utiliser Router uniquement sur le navigateur?Redirection conditionnelle dans Next.js

Je sais au moins une façon de le faire: pour créer et ajouter button simples Router pousser & les cookies de contrôle à l'intérieur onClick gestionnaire, mais est-ce une bonne façon de le faire?

Répondre

0

Vous pouvez vérifier si l'utilisateur a accédé à la page via le serveur ou le client. et après cela, vous pouvez rediriger sous condition avec l'outil approprié. La fonction getInitialProps obtient un objet ctx. vous pouvez vérifier si c'est sur le serveur ou le client comme ceci:

import Router from 'next/router' 

export default class Browse extends Component { 

    static async getInitialProps (ctx) { 
     if (ctx && ctx.req) { 
      console.log('server side') 
      ctx.res.writeHead(301, {Location: `/`}) 
      ctx.res.end() 
     } else { 
      console.log('client side') 
      Router.push(`/`) 
     } 
...