react hook 页面跳转路由置顶


路由切换后,页面scroll 会定位在切换之前的位置,而非当前页的顶部,而希望回到顶部,则可以在当前页设置 window.scrollTo(0,0);则可以回到页面顶部,但是只是一个页面,如果每个页面都这样的话,又感到代码冗余,故,可以写个scroll组件,嵌套在路由切换的根组件下。代码如下。

scrollToTop.js

import {useEffect} from 'react';

import {useLocation} from 'react-router-dom';

const ScrollToTop = props =>{

  const {pathname} = useLocation();

  useEfect(()=>{

    window.scrollTo(0,0)

  },[pathname]);

  return props.children;

}

export default ScrollToTop;

注: 我项目使用的是react-router-dom,也可以使用react-router,但是version必须是5.1以上,否则useLocation无法使用。

App.js

import ScrollToTop from './scrollToTop';

export default function App(){

  return(

   <div>

    <ScrollToTop>

        <Switch>

         <Route/>  

        </Switch>

    </ScrollToTop>

   <div>

  )

}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM