react界面跳转,滚动到顶部

在使用react-router-dom时,我们经常会遇到路由切换时滚动到浏览器顶部的问题。

滚动到顶部 Scroll to top

很多时候我们需要的是滚动到顶部“Scroll to top”,因为发现好像所有的单页面都有一个通病,就是页面进行跳转时,当前所在的位置和你上个界面所在的位置一样,显然这样对于用户来说体验不是很好。

 我们可以使用使用一个<ScrollToTop>组件来帮助我们每次导航到一个页面的时候,滚动到顶部。确保使用 withRouter包裹它,以传递route的属性props

 

import React, { Component } from 'react';
import {withRouter} from  'react-router-dom'
import 'moment/locale/zh-cn';
class ScrollToTop extends Component {
    componentDidUpdate(prevProps) {
        if (this.props.location.pathname !== prevProps.location.pathname) {
            window.scrollTo(0, 0);
        }
    }

    render() {
        return this.props.children;
    }
}
export default withRouter(ScrollToTop);

 

在你的app之前,Router之后渲染它

 

import React from 'react';
import ReactDOM from 'react-dom';
import {BrowserRouter} from 'react-router-dom';
import Root from './router/Router';
import * as serviceWorker from './serviceWorker';
import './index.css';
import './static/fonts/iconfont.css';
import ScrollToTop from '../src/models/scrollToTop'
// ReactDOM.render(<Root />, document.getElementById('root'));
ReactDOM.render(
    <BrowserRouter>
        <ScrollToTop>
        <Root />
        </ScrollToTop>
    </BrowserRouter>, document.getElementById('root'));


serviceWorker.unregister();

注:这个方法在页面跳转过程中非常有用,但是对于那种界面上有分页有很长的界面,每点击跳转一页的时候,界面位置还是在原来的位置,这个时候我们可以自己写一个组件,在界面中import backTop from '......'的componentDidMount(){backTop()}中引用就可以了。

export function backTop(){
        var currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
        if (currentScroll > 0) {
            //window.requestAnimationFrame(smoothscroll);
            window.scrollTo (0,0);
        }
}

 

转载于:https://www.cnblogs.com/yesu/p/10973639.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值