Next.jsをver.12からver.13へとアップデートした。
するとerror - Error: Invalid <Link> with <a> child. Please remove <a> or use <Link legacyBehavior>.
とエラー発生。
Next.js 13からは<Link>
の中に<a>
を入れなくて良くなった、というか入れるとエラーが出る。
// Next.js 12
<Link>
<a>
Click me!
</a>
</Link>
// Next.js 13
<Link>
Click me!
</Link>
ドキュメントにもあるとおり、codemodを用いて<Link>
内のすべての<a>
を一括削除することができる。
npx @next/codemod new-link .
ただし、<a>
がなくなるとCSSなどのサイト挙動がおかしくなるため、ひとまず回避策として<Link>
にlegacyBehavior
を追加することで、Next.js 12と同じ挙動を行わせることができる。
// Next.js 13
<Link legacyBehavior>
<a id="clickMe">
Click me!
</a>
</Link>
今回はひとまず、VSCodeのファイル横断置換を使って全ての<Link>
にlegacyBehavior
を追加した。