路由器问题。当我在react-router版本6中更改任何路由器时,页面位置保持最后页面位置

2023-12-04

我使用了react-router版本6。一切正常。但有一个问题是,当我更改任何路线时,假设这是 2 条路线,另一次联系。现在我在关于页面的中间。现在,当我单击“联系路由页面”时,路由器已更改,但问题是网页仍然保留在页面中间。一般来说,当我们点击任何链接更改路线页面位置时,都会自动从顶部开始。然后我们必须滚动。但是react-router版本6有这个问题。页面不会从顶部位置开始。页面位置保留最后一页位置。

我怎么解决这个问题?请帮我。如果您不明白我的问题,请在评论部分告诉我。

路由器文件代码

import React from "react";
import { Route, Routes } from "react-router-dom";
import Navbar from "../Components/Navbar/Navbar";

const NavbarRouter = () => {
    return (
        <Routes>
            <Route path="/" element={<Navbar />}>
                <Route index element={<Home />} />
                <Route path="about" element={<About />} />
                <Route path="contact" element={<Contact />} />
            </Route>
        </Routes>
    );
};

导航栏代码

import React from 'react';
import {Outlet,Link} from "react-router-dom"


const Navbar = () => {
    return (
        <div>
            <nav className="navbar position-fixed navbar-expand-lg navbar-light bg-light">
                <div className="container-fluid">
                    <a className="navbar-brand" href="#">
                        Navbar
                    </a>
                    <button
                        className="navbar-toggler">
                        <span className="navbar-toggler-icon"></span>
                    </button>
                    <div className="collapse navbar-collapse" id="navbarNav">
                        <ul className="navbar-nav">
                            <li className="nav-item">
                                <Link className="nav-link" to="/">Home</Link>
                            </li>
                            <li className="nav-item">
                                <Link className="nav-link" to="/about">About</Link>
                            </li>
                            <li className="nav-item">
                                <Link className="nav-link" to="/contact">Contact</Link>
                            </li>
                            <li className="nav-item">
                                <a className="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">
                                    Disabled
                                </a>
                            </li>
                        </ul>
                    </div>
                </div>
            </nav>

            <Outlet />
        </div>
    );
};

export default Navbar;

In the NavbarRouter包装组件使用useLocation and useEffect挂钩“监听”路线更改并将窗口滚动回顶部。

import { useEffect } from 'react';
import { useLocation } from 'react-router-dom';

const NavbarRouter = () => {
  const { pathname } = useLocation();

  useEffect(() => {
    window.scrollTo(0, 0);
  }, [pathname]);
  
  return (
    <Routes>
      <Route path="/" element={<Navbar />}>
        <Route index element={<Home />} />
        <Route path="about" element={<About />} />
        <Route path="contact" element={<Contact />} />
      </Route>
    </Routes>
  );
};

如果您需要配置/自定义视图如何滚动回顶部的行为,请使用options论证版本。设置behavior选项之一auto (default) or smooth. auto是默认值,让浏览器决定是使用平滑滚动还是即时滚动。

window.scrollTo({
  top: 0,
  left: 0,
  behavior: 'auto',
});

window.scrollTo

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

路由器问题。当我在react-router版本6中更改任何路由器时,页面位置保持最后页面位置 的相关文章

随机推荐

  • Python的break函数在true时不会结束

    为什么中断不会在 true 时结束并返回到开始处 while True print This is a quiz print What is your name Name input print Hello Name The quiz wi
  • JTextArea 只能包含数字,但允许负值

    我有一个 JTextArea 只需要接受数字 这是我的代码 DocumentFilter onlyNumberFilter new AxisJTextFilter final JTextArea areaTextoXMin new JTex
  • 在 C++ 中读取 Fortran 二进制文件

    读取 使用 C 程序 由 Fortran 代码生成的二进制文件的问题已被多次询问 并且已经给出了 Fortran 记录中约定的令人满意的描述 例如http local wasp uwa edu au pbourke dataformats
  • 在 CI 中加载页眉和页脚视图

    有没有办法在不调用的情况下加载视图 页眉 页脚 this gt load gt view header or this gt load gt view footer 在每个控制器中 也许是一个可以在每个视图中使用的模板 以下是一些帮助您入门
  • SSL 主机名匹配如何在 JWS 上工作?

    当使用 Android 版 Google SafetyNet 时 文档建议您 验证 SSL 证书链并使用 SSL 主机名匹配 确保叶子认证是问题attest android com 现在这是如何运作的 我假设我收到 JWS 消息检查证书和签
  • 无法从 docker 访问 jupyter 笔记本

    我正在尝试运行在 Docker 中创建的 jupyter 笔记本 首先我运行一个容器 docker run p 8888 8888 jupyter tensorflow notebook 我得到的是 I 19 44 47 140 Noteb
  • 如果我关闭 wifi,则无法让 ionic 应用程序工作(在开发过程中)

    因此 在开发时 我关闭了 wifi 然后 ionic 应用程序无法在 Android 设备 模拟器中工作 但是当我关闭 wifi 时 Android 应用程序的已发布和签名的 apk 文件工作得很好 问题是我需要我的应用程序在互联网连接关闭
  • 本地数据缓存同步不会将客户端更改保存到 sdf 文件

    我创建了一个新的 c 项目 并按照本教程中的步骤创建了 LocalDate 缓存 我接下来添加了以下代码 using System using System Collections Generic using System Componen
  • d3:仅线性插值足够接近的点

    假设我有一个具有相应日期的值数组 date d1 value v1 date dn value vn 我想使用 d3 js 进行可视化 只要后续测量在一定的时间范围内 例如相隔不超过一周 我就很高兴在测量之间插入 d3 但是 当后续记录相距
  • 奇怪的 strtok 行为

    char line 255 char token NULL char line2 NULL char temporaryToken NULL if scanf n line gt 0 token strtok line divide the
  • 在默认日历中添加特定日期作为事件

    我是 iPhone 开发新手 我的应用程序中有一个要求 其中有一个网络服务链接 如下所示 http 01s in webservices sikhcalendar getData php db table cal 所以我想要链接中显示的特定
  • 如何将类构造函数的“this”绑定到外部对象

    我正在寻找一种使用类似的方法Function apply对于类 以便this执行的构造函数的属性是外部对象 通过一个功能我可以简单地使用apply function Bar this value value const proxy Bar
  • 如何垂直连接多个结构结果?

    如果我有结构数组并使用矩阵索引访问它 我会得到多个 anses gt gt a struct a 0x0 struct array with no fields gt gt a 1 f1 1 2 a f1 2x1 double gt gt
  • 自动化 Excel 时如何将文本框对象放置在特定单元格上?

    我们正在使用 VB Net 自动化 Excel 并尝试在 Excel 工作表上放置多行文本 并将其设置为不打印 在这些之间我们会有可打印的报告 如果我们添加文本框对象并将打印对象设置设置为 false 则可以做到这一点 如果您有其他方法 请
  • xsd中key的正确使用方法

    我正在为我正在从事的项目编写 XSD 架构 下面的架构是我从微软示例中获取的 并稍加修改 我试图使用 key 和 keyref 为一组项目声明一个唯一的键 然后在另一部分中引用该键 我很长一段时间都无法让它工作 我将编写架构并设置一个测试文
  • 如何在 iOS 5 中向 UIPageViewController 添加页面数组?

    有谁知道我缺少什么才能将我自己的视图控制器手动添加到 UIPageViewController 方法中 我目前有这个 我不知道如何继续 NSDictionary pageViewOptions NSDictionary dictionary
  • 枚举桌面上的所有窗口句柄

    有没有 Win32 API 方法来获取所有打开的窗口的枚举 似乎一定不知道从哪里开始寻找 枚举Windows 是为了那个 您调用它并提供回调 它为每个找到的窗口调用回调并将句柄传递给该窗口 然后 您可以使用该句柄查询窗口参数并决定您是否对此
  • 卡住:在 Mac 上的“钥匙串访问”中向证书颁发机构请求证书

    我在 Mac 上的 钥匙串访问 中向证书颁发机构请求证书是堆叠的 如下图所示 生成证书所需的时间太长 我填写了证书颁发机构的电子邮件 姓名和电子邮件地址 我可能填写有误 证书颁发机构的电子邮件地址 如果是 证书颁发机构 的电子邮件地址是什么
  • 将自定义属性添加到 WebGrid 呈现的表中

    我正在使用 MVC3 WebGrid 并且想要将 data xxx 形式的自定义属性添加到 table 元素渲染者WebGrid GetHtml 我尝试按如下方式执行此操作 grid GetHtml htmlAttributes new d
  • 路由器问题。当我在react-router版本6中更改任何路由器时,页面位置保持最后页面位置

    我使用了react router版本6 一切正常 但有一个问题是 当我更改任何路线时 假设这是 2 条路线 另一次联系 现在我在关于页面的中间 现在 当我单击 联系路由页面 时 路由器已更改 但问题是网页仍然保留在页面中间 一般来说 当我们