转换后 React Router 滚动页面到顶部

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,但没有任何变化。

Rai*_*.To 6

你可以尝试下面的方法吗

 <BrowserRouter >        
    <Layout>
      <ScrollToTop />
        <Switch>
          <Route path="/" exact component={MainPageConfig} />
        </Switch>
    </Layout>
  </BrowserRouter>
Run Code Online (Sandbox Code Playgroud)