Cookieの値に基づいて、条件付きでユーザーを別のURLにリダイレクトすることは可能ですか?サーバー上のCookieを検査してからリダイレクトできることはわかっています。しかし、ユーザーがLink
を経由した場合は、どうすればよいですか。 (サーバー上で未定義のため、Route.Pushを使用できません)ブラウザーでのみルーターを使用する方法はありますか?
私はこれを行う少なくとも1つの方法を知っています:単純なbutton
を作成し、ルータープッシュを追加してonClick
ハンドラー内にCookieをチェックしますが、これを行う正しい方法ですか?
ユーザーがサーバー側またはクライアント側を介してページにアクセスしたかどうかを確認できます。その後、適切なツールを使用して条件付きでリダイレクトできます。 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(302, {Location: `/`})
ctx.res.end()
} else {
console.log('client side')
Router.Push(`/`)
}
...