🛣️

【Next.js】ルーティング実装はnext/routerとnext/linkどちらが最適解なのか

2022/04/05に公開

やりたいこと

  • Next.jsにおいて、画面遷移の書き方は以下の2つのどちらが最適解かを知りたい。
    • next/router
    • next/link

結論

基本的に以下のように使い分ければ良さそう。

  • トリガーがクリックの場合は、next/link

    • 例:ヘッダーメニューでクリックしてページ遷移するときなど
  • トリガーがクリック以外の場合は、next/router

    • 例:ログイン認証が通ったら、TOPページにリダイレクトさせるなど

具体的に何が良いのか、Pros/Consでまとめてみました。

  • Pros
    • SEOに強くなる
      • aタグが生成され、クローラーに検出してもらいやすくなる。クローラビリティが向上する。
    • SPAのような挙動になるため、パフォーマンス・UX向上につながる。
  • Cons
    • 特になし

※ちなみに<a>のみだと、SPA機能が提供されないのでメリットがあまりない。

next/router

  • Pros
    • ロジック内でroutingのトリガーを発火することができる。
  • Cons
    • SEOに弱い。
      • aタグが生成されないので、クローラーに検出されない。

        window.locationに似た挙動になるっぽい。

→ 他のページに移動するためだけに使用するのは避けたい。

参考サイト

https://nextjs-ja-translation-docs.vercel.app/docs/routing/introduction
https://developers.google.com/search/docs/advanced/guidelines/links-crawlable?hl=ja
https://ferret-plus.com/22458
https://stackoverflow.com/questions/65086108/next-js-link-vs-router-push-vs-a-tag

Discussion

ログインするとコメントできます