2017-07-14 13 views
0

クッキー値に基づいて条件付きで別のURLにユーザーをリダイレクトすることはできますか? 私はサーバー上のクッキーを検査できることを知っています&その後、リダイレクトします。 しかし、ユーザーがLinkを訪問した場合はどうすればよいですか。 (Route.pushはサーバー上で定義されていないため使用できません) ブラウザでのみルータを使用する方法はありますか?Next.jsの条件付きリダイレクト

私はこれを行うには、少なくとも一つの方法を知っている:シンプルbuttonを作成して、ルータのプッシュにonClickハンドラ内&チェッククッキーを追加するために、それは、これを行うための正しい方法は何ですか?

答えて

0

ユーザーがサーバー側またはクライアント側からページにアクセスしたかどうかを確認できます。 以降、条件付きで適切なツールを使用してリダイレクトすることができます。 getInitialProps関数はctxオブジェクトを取得します。あなたはこのようなサーバーかクライアントかどうか確認することができます:

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