0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Next.jsのDynamic RoutesでSPA遷移

Posted at

Issue

Next.jsのDynamic Routesを使っているページに対して普通にnext/link<Link>を使ってリンクを貼ると、遷移時にブラウザのロードが発生してしまってSPA遷移にならない。
最初、Next.jsじゃなくてReactの何かがおかしい?と思って軽くハマった。


import Link from 'next/link'

// これだとブラウザロードが発生してしまう
<Link href={`/posts/${post.id}`}>リンク</Link>

Solution

ドキュメントを見ると、next/link<Link>にはas属性というのが用意されており、「ブラウザのURLバーでレンダリングされるパスを示すもので、Dynamic Routesで使ってください」と書いてある。
じゃあhrefは何なのかと言うと、「pagesディレクトリの内部のパスです」とのこと。

要するに、例えばDynamic Routesでpages/posts/[post-id].jsxとしている場合は下記のように書けば良いらしいです。


import Link from 'next/link'

<Link href="/posts/[post-id]" as={`/posts/${post.id}`}>リンク</Link>

asの方に普段hrefに書いているような具体的なパスを書くんですね。何か違和感。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?