当我更改路线时,为什么 Nextjs 链接滚动到顶部不起作用

pro*_*011 10 next.js next-link

我正在使用 next/link,但是当我更改路线时,滚动到顶部不起作用。

<Link href="/some-page" scroll={false}> Go</Link>
Run Code Online (Sandbox Code Playgroud)

我该做什么?我尝试了太多的方法,但没有结果。

小智 6

您可以创建此组件并将其导入到要滚动到顶部的页面上。

如果您使用的版本早于 NextJS 13,则只需删除“use client”即可。

// scrollToTop
"use client";
import { useEffect } from "react";
import React from "react";

export default function scrollToTop() {
  useEffect(() => {
    window.scrollTo(0, 0);
  }, []);
  return null;
}
Run Code Online (Sandbox Code Playgroud)

将其导入到要滚动到顶部的页面上:

// examplePage
import React from "react";
import ScrollToTop from "./scrollToTop"; // imported scroll to top

const Page = () => {
  return (
    <>
      <ScrollToTop />
      <div>Text...</div>
    </>
  );
};

export default Page;
Run Code Online (Sandbox Code Playgroud)

现在,每当您进入或刷新页面时,它总是会滚动到顶部。


Ram*_*kay 3

您的代码通过使用禁用滚动到顶部scroll={false}

通过文档:

Link 的默认行为是滚动到页面顶部。当定义了哈希值时,它将滚动到特定的 id,就像普通标签一样。为了防止滚动到顶部/哈希滚动= {false}可以添加到链接:

删除scroll={false}即可解决。

  • 谢谢你的答案。我尝试不使用scroll={false},但没有成功 (2认同)