Next.js で 登録ユーザーの前ページを知る方法
2025年02月21日 8:38
document.referrer
を使うuseRouter().query
を使うuseRouter() + localStorage
を使うユーザーが users/signup
ページに到達した際に、どのページから来たのかを知ることは、以下のような場面で役立ちます。
この情報を取得するために、以下の3つの方法を紹介します。
document.referrer
を使う/users/signup
のページで useEffect
を使って document.referrer
を取得。✅ メリット:
🚨 デメリット:
document.referrer
は 同一サイト内のみ取得可能。noopener
が設定されたリンクでは取得できない。useRouter().query
を使うクエリパラメータを使って遷移元のページを渡す方法。
router.push
でクエリパラメータに遷移元を含める。/users/signup
でクエリパラメータから値を取得。遷移元のページ(例: /jobs
)
/users/signup
ページ
✅ メリット:
🚨 デメリット:
?from=URL
を追加する必要がある。useRouter() + localStorage
を使うページ遷移を記録し、/users/signup
に来たら取得する方法。
_app.js
で localStorage
に現在のページを記録。/users/signup
で localStorage
から前のページを取得。_app.js
に追加
/users/signup
で取得
✅ メリット:
🚨 デメリット:
localStorage
は SSR では使えない ので useEffect
内で処理する必要あり。方法 | メリット | デメリット |
---|---|---|
document.referrer | 簡単に実装できる | 外部サイトや noopener の影響で取得できない |
useRouter().query | 確実に遷移元を取得可能 | すべてのリンクに ?from=URL を追加する必要がある |
localStorage | 自動で記録可能 | SSR時は使えず useEffect が必要 |
✅ おすすめの方法
document.referrer
useRouter().query
localStorage
Next.js で /users/signup
に到達したユーザーが前にいたページを知るには、状況に応じた適切な手法を選ぶことが重要です。用途に応じた方法を活用しましょう!
[cv:issue_marketplace_engineer]
診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。