NextJs -用于滚动到同一页中某个部分的链接

ubof19bj  于 2022-11-23  发布在  其他
关注(0)|答案(3)|浏览(189)

我正在使用NextJs。我想在我的页眉部分创建一个链接。这个链接应该通过滚动将用户带到同一页面上的TestimonialsSection。

<Link href={"#TestimonialsSection"}>
          <a className={styles.Designation}>Mentor</a>
        </Link>

这是我试过的代码,但没有成功。不过网址会更改。提前感谢

unhi4e5o

unhi4e5o1#

在普通HTML中,您可以这样做

<a href="#first-section">My first section</a>
<a href="#second-section">My second section</a>

<div id="first-section">SECTION 1</div>
<main id="second-section">SECTION 2</main>

在NextJS中,你可以做类似的事情,不用锚标记来链接,而是使用Link组件。

<Link href="#first-section">My first section</Link>
<Link href="#second-section">My second section</Link>

<div id="first-section">SECTION 1</div>
<main id="second-section">SECTION 2</main>

这样就可以了。但是,如果您希望起始URL为www.my-site.com/#second-section,则需要将Link组件的scroll属性设置为false。例如:

...
<Link href="#second-section" scroll={false}>My second section</Link>
...

请确保您的section/div(即目标元素)正确设置了ID属性,而没有#,并且相应的锚链接将#作为IDname的前缀
以下是NextJS的官方文档https://nextjs.org/docs/api-reference/next/link
希望这能解决您的问题。

mbjcgjjk

mbjcgjjk2#

如果它只是一个静态字符串,你应该像上面说的那样去掉大括号。
如果您正在创建一个可重用组件,其中您需要从父组件中指定ID,请使用模板字符串并保留大括号。

<Link href={`#${props.id}`}>
  <a className={styles.Designation}>Mentor</a>
</Link>
xwbd5t1u

xwbd5t1u3#

尝试使用Link标记并在URL中添加#some-link,然后在Link标记href中添加href ='#some-link'
www.google.com/#some-link

<Link href='#some-link'>
    // code section
</Link>

相关问题