繁体   English   中英

react router dom v6 的 ScrollToTop 实现

[英]ScrollToTop implementation with v6 of react router dom

导航到另一个页面时遇到问题,它的 position 将保持与之前的页面相同。 所以它不会自动滚动到顶部。 我目前正在使用“react-router-dom”:“^6.2.1”,

ScrollToTop.js

import { useEffect } from 'react';
import { useNavigate } from 'react-router-dom'; 

const withRouter = (Component) => {
  const Wrapper = (props) => {
    let history = useNavigate();
    return (
      <Component
        history={history}
        {...props}
        />
    );
  };
  
  return Wrapper;
};

function ScrollToTop() {
    let history = useNavigate();
  useEffect(() => {
    const unlisten = history.listen(() => {
      window.scrollTo(0, 0);
    });
    return () => {
      unlisten();
    }
  }, [history]);

  return (null);
}

export default withRouter(ScrollToTop);

App.js我正在返回以下片段

return (
    <>
    <Router>
      <Header/>
      <ScrollToTop />
      {isAuthenticated && <UserOptions user={user}/>}
      <Routes>
        <Route exact path="/" element={<Home /> }/>
        <Route exact path="/product/:id" element={<ProductDetails/>}/>
        <Route exact path="/products" element={<Products/>}/>
        <Route path="/products/:keyword" element={<Products/>}/>
        <Route exact path="/search" element={<Search/>}/>
        <Route exact path="/login" element={<LoginSignUp/>}/>
      </Routes>
      <Footer/>

    </Router>
    </>
  );
}
export default App;

添加 ScrollToTop 组件后,我没有在页面中呈现任何内容。 并且它在控制台上显示“未捕获的 TypeError:history.listen 不是函数”的错误。

我是 MERN 堆栈开发的初学者,所以请指导我哪里错了,以及我的代码库需要改变什么。

我参考了波纹管链接

堆栈溢出:滚动到顶部。

GitHub:在 V6 中弃用了路由器?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM