NextJs不允许嵌套Link标签的解决办法
在使用 Next.js 的 <Link> 组件时,开发者可能会遇到一个常见的问题:当你尝试将 <Link> 标签互相嵌套时,会收到错误提示。这是因为从 Next.js 13 开始,<Link> 组件本身就会渲染为一个 <a> 标签,因此不允许再嵌套另一个 <a> 标签。
legacyBehavior 的作用
为了处理这个问题,Next.js 引入了 legacyBehavior 属性。使用这个属性可以让开发者继续使用旧版的嵌套方式。具体来说,当你在 <Link> 中使用 legacyBehavior 时,可以像下面这样写:
import Link from 'next/link';
export default function Home() {
return (
<Link href="/about" legacyBehavior>
<a>Go to About Page</a>
</Link>
);
}
这样,此Link标签就不会再渲染为a标签,自然也不会报错了。
An
<a>element is no longer required as a child of<Link>. Add the legacyBehavior prop to use the legacy behavior or remove the<a>to upgrade. A codemod is available to automatically upgrade your code.