【发布时间】:2021-06-29 05:14:03
【问题描述】:
当我更改 url 路径时,我试图将滚动位置恢复到页面顶部,但它不起作用。 我创建了一个 ScrollToTop 组件,它带有一个应该对路径更改做出反应的 useEffect()。然后我将组件导入到我的路由中,但没有任何改变,我不明白为什么。你有什么想法/建议吗?
ScrollToTop 组件:
import { useLocation } from "react-router-dom";
export default function ScrollToTop() {
const { pathname } = useLocation();
useEffect(() => {
window.scrollTo(0, 0);
}, [pathname]);
return null;
}
App.js:
...
import {
BrowserRouter as Router,
Switch,
Route,
} from "react-router-dom"
import ScrollToTop from "./components/ScrollToTop"
function App() {
return (
<Router>
<ScrollToTop />
<Header></Header>
<Switch>
<Route path="/about">
<About/>
</Route>
<Route path="/works">
<Works />
</Route>
<Route path="/">
<Home />
</Route>
</Switch>
<Footer></Footer>
</Router>
);
}
export default App;
【问题讨论】:
-
它看起来应该可以工作了,你能在 codepen 或类似的东西上做一个可重现的例子吗?
标签: reactjs scroll react-router use-effect