我需要作出React,从顶部打开新的一页。
我的gotoTop.js:
import { useEffect } from "react";
import { useLocation } from "react-router-dom";
export default function ScrollToTop() {
const { pathname } = useLocation();
useEffect(() => {
window.scrollTo(0, 0);
}, [pathname]);
return null;
}
有时它会滚动到顶部,有时不会。看起来好像用户点击的元素低于下一页的大小,它不会工作。我很困惑为什么它不工作。
我已经在组件安装时和组件更新时尝试过了:
var something = document.getElementById('someid')
something.scrollIntoView()
但是这也不起作用,它在unmount中找不到元素,在update中也不起作用
我的app.js看起来像这样:
return (
<StrictMode>
<BrowserRouter>
<ScrollToTop />
<header className='navMenu'>
<div className='navMenuInside'>
<div className='navMenuCenter'>
<Link onClick={handleLinkClick}>About</Link>
<Link className="activeMenu" to="/">Projects</Link>
<Link onClick={sendEmail}>E-mail</Link>
</div>
</div>
</header>
<Routes>
<Route path="/projects/:id" element={<Details />} />
<Route path="/" element={<Projects />} />
</Routes>
<Footer
linkedin={info.linkedin}
/>
</BrowserRouter>
</StrictMode>
);
1条答案
按热度按时间oxcyiej71#
您应该尝试创建一个
Wrapped component
就像这样:
然后将其 Package 在应用程序或组件周围