我用过react-router版本6。一切正常。但有一个问题,那就是当我改变任何路由假设这是2路由一次关于,另一个联系。现在我在关于页的中间。现在,当我点击联系路由页面和路由器是改变,但问题是网页仍然停留在页面中间。一般来说,当我们点击任何链接更改路由页面位置将自动从顶部开始。然后我们必须滚动。但React路由器版本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;
1条答案
按热度按时间mwkjh3gx1#
在
NavbarRouter
Package 器组件中,使用useLocation
和useEffect
钩子“监听”路由更改,并将窗口滚动回顶部。如果需要配置/自定义视图如何滚动回顶部的行为,请使用
options
参数版本。将behavior
选项设置为auto
(default)或smooth
之一。auto
是默认值,让浏览器决定是使用平滑滚动还是即时滚动。window.scrollTo