当前位置: 首页 > 知识库问答 >
问题:

javascript - nextjs页面跳转怎么取消自动滚到顶部的这个过程?

郭翰翮
2023-05-04

场景:页面A滚动一段距离,使用Link标签跳转到页面B,页面会记录页面A滚动的距离,向上滚动到顶部,使用了scroll:false这个属性跳转到页面B页面不会回到顶部。现在我想取消滚动的这个过程,让每次跳转到的页面初始都定位在顶部怎么做?

共有1个答案

胡飞鹏
2023-05-04

可以链接跳转的时候加一个查询参数:
在 styles/globals.css :

html.disable-smooth-scroll {
  scroll-behavior: auto !important;
}
import Link from 'next/link';

<Link href={{ pathname: '/your-page', query: { scrollToTop: 'true' } }}>
  Your link text
</Link>
import { useEffect } from 'react';
import { useRouter } from 'next/router';
import '../styles/globals.css';

function MyApp({ Component, pageProps }) {
  const router = useRouter();

  useEffect(() => {
    const handleRouteChange = (url) => {
      const urlObj = new URL(url, window.location.origin);

      if (urlObj.searchParams.get('scrollToTop') === 'true') {
        document.documentElement.classList.add('disable-smooth-scroll');
        window.scrollTo(0, 0);
        setTimeout(() => {
          document.documentElement.classList.remove('disable-smooth-scroll');
        }, 0);
      } else {
        window.scrollTo(0, 0);
      }
    };

    router.events.on('routeChangeComplete', handleRouteChange);

    return () => {
      router.events.off('routeChangeComplete', handleRouteChange);
    };
  }, [router.events]);

  return <Component {...pageProps} />;
}

export default MyApp;

 类似资料:
  • 我对jQuery移动锚有问题。当我点击带有某个锚的_blank链接时,我会重定向到新选项卡中的新页面并导航到锚链接。但是当页面完全加载时,页面跳转到页面顶部

  • 问题内容: 如何使用JavaScript滚动到页面顶部?即使滚动条立即跳到顶部也是可取的。我不是在寻找平滑的滚动。 问题答案: 如果您不需要更改以进行动画处理,则无需使用任何特殊的插件-我只需要使用本机JavaScript window.scrollTo方法- 传入0,0即可将页面立即滚动到左上角。 参量 x坐标是沿水平轴的像素。 y坐标是沿垂直轴的像素。

  • 我正在做一个西班牙新闻应用程序,看这里: 这个应用程序的问题是,每当任何用户点击like、play audio或translate按钮时,recyclerView就会跳到顶部。 > 数据以片段形式从Firebase实时数据库中获取。请帮帮忙。 @override public View onCreateView(LayoutInfluater Influater,ViewGroup contain

  • 问题内容: 有没有一种方法可以使用JavaScript / jQuery控制浏览器滚动? 当我向下滚动页面一半,然后触发重新加载时,我希望页面进入顶部,但它会尝试找到最后一个滚动位置。所以我这样做: 但是没有运气。 编辑 : 因此,当页面加载后,我打电话给您时,您的两个答案都有效。但是,如果我只是在页面上刷新,则看起来浏览器会在事件发生后计算并滚动到其旧的滚动位置(我也测试了body onload

  • 我试图让jquery在每次有人单击导航按钮时移动到页面顶部。 当点击某个按钮时,它会隐藏旧的内容并显示新的内容,但它不会重置浏览器滚动位置,因此最终用户会感到有点困惑。 所以我想添加一些JS命令来解决这个问题,但这只在第一次执行时起作用。 我的代码:

  • 问题内容: 考虑我有一个问题清单。当我单击第一个问题时,它应该自动带我到页面底部。 实际上,我确实知道可以使用jQuery完成此操作。 因此,您能为我提供一些文档或一些链接,以找到该问题的答案吗? 编辑:需要滚动到页面底部的特定HTML 元素 问题答案: 不需要jQuery。我从Google搜索获得的大多数热门结果都给了我这个答案: 在嵌套元素的地方,文档可能不会滚动。在这种情况下,您需要定位要滚