Ber*_*den 3 javascript navigation reactjs react-router
在我的应用程序中,当我从一个页面更改到另一个页面时,该页面将保持在与上一页相同的位置。我想让它在交换页面时转到顶部。
React-router文档有一个解决方案:https ://reactrouter.com/web/guides/scroll-restoration
我在一个名为的组件中实现了它ScrollToTop,并用它包装了我的整个应用程序,但其中的所有内容都没有被渲染。我不知道为什么。
滚动到顶部:
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;
}
Run Code Online (Sandbox Code Playgroud)
应用程序:
import React from 'react';
import './App.css';
import Layout from './containers/Layout/Layout'
import MainPageConfig from './containers/MainPageConfig/MainPageConfig'
import ScrollToTop from './HOC/ScrollToTop'
import { BrowserRouter, Route, Switch } from 'react-router-dom'
function App() {
return (
<BrowserRouter >
<Layout>
<ScrollToTop>
<Switch>
<Route path="/" exact component={MainPageConfig} />
</Switch>
</ScrollToTop>
</Layout>
</BrowserRouter>
);
}
export default App;
Run Code Online (Sandbox Code Playgroud)
我还尝试了这篇文章的建议:react-router在每次转换时滚动到顶部
在这两种情况下我都得到相同的结果。
我该如何解决这个问题?
PS我也尝试放在ScrollToTop外面Layout,但没有任何变化。
你可以尝试下面的方法吗
<BrowserRouter >
<Layout>
<ScrollToTop />
<Switch>
<Route path="/" exact component={MainPageConfig} />
</Switch>
</Layout>
</BrowserRouter>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9301 次 |
| 最近记录: |