2017-07-14 5 views
0

Ist es möglich, einen Benutzer auf der Grundlage des Cookie-Werts bedingt zu einer anderen URL umzuleiten? Ich weiß, ich kann Cookie auf einem Server & dann Umleitung überprüfen. Aber was soll ich tun, wenn ein Benutzer durch Link kam. (Ich kann Route.push nicht verwenden, da es auf dem Server nicht definiert ist) Gibt es eine Möglichkeit, Router nur im Browser zu verwenden?Bedingte Umleitung in Next.js

Ich weiß zumindest eine Möglichkeit, dies zu tun: button einfach zu erstellen und fügen Sie Router drücken & Check Cookies innerhalb onClick Handler, aber ist es ein richtiger Weg, dies zu tun?

Antwort

0

Sie können überprüfen, ob der Benutzer die Seite über Server oder Clientseite aufgerufen hat. und danach können Sie mit dem richtigen Werkzeug bedingt umleiten. Die Funktion getInitialProps ruft ein ctx-Objekt ab. Sie können überprüfen, ob es auf Server oder Client wie folgt ist:

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(`/`) 
     } 
...