NextJS Link 未呈现锚标记

Mik*_*lis 3 javascript reactjs next.js

我正在使用 React + NextJS,并且尝试呈现产品列表,就像您在典型的电子商务类别页面上看到的那样。每个产品都在 , 中p,并且p应该链接到相应的详细信息页面(因此它应该被锚标记包围a)。

不幸的是,这些链接可以工作,但它们不会呈现实际的锚标记。谁能解释我缺少什么?

场景 A:普通文本链接(按预期工作)


输入:

<Link href="wherever">word holmes</Link>
Run Code Online (Sandbox Code Playgroud)

输出:

<a href="wherever">word holmes</a>
Run Code Online (Sandbox Code Playgroud)

场景 B:链接任意块


输入:

<Link href="wherever">
    <p>word holmes</p>
</Link>
Run Code Online (Sandbox Code Playgroud)

输出:

<p>word holmes</p>
Run Code Online (Sandbox Code Playgroud)

期望的输出:

<a href="wherever"><p>word holmes</p></a>
Run Code Online (Sandbox Code Playgroud)
  • 标签去哪儿了<a />??
  • 将鼠标悬停在块上不会出现指针光标,但单击它确实会将您带到href目标

场景 C:将我自己的添加a到任意块中


输入:

<Link href="wherever">
    <a>
        <p>word holmes</p>
    </a>
</Link>
Run Code Online (Sandbox Code Playgroud)

输出:

<a href="wherever"><p>word holmes</p></a>
Run Code Online (Sandbox Code Playgroud)
  • 好吧,这可行,但感觉很hacky..
  • 为什么这有效?这是“正确”的做法吗?

Baf*_*sky 9

根据https://github.com/vercel/next.js/blob/canary/packages/next/client/link.tsxa,如果子项是字符串,则会自动添加标签。否则它只会返回孩子。所以在你的情况下,孩子是一个p标签,所以这就是返回的全部内容。似乎你可以将其包装在a标签中,这样就可以了。