单击后退按钮时,React-router将滚动到顶部

时间:2017-11-15 00:33:41

标签: reactjs ecmascript-6 react-router

我能够通过创建方法来解决反应路由器中的滚动位置问题

 scrollToTop() {
   window.scrollTo(0, 0);
} 

然后将其应用于带有

的按钮
onClick={scrollToTop}

这适用于链接,但单击后退按钮时不起作用。如何让它也适用于后退按钮?

1 个答案:

答案 0 :(得分:0)

我创建了一个新组件来执行此功能。

ScrollToTop.jsx

   import React, { Component } from 'react';
    import {withRouter} from 'react-router';
    import $ from 'jquery'

    class ScrollToTop extends Component {

      componentDidUpdate(prevProps) {
        if (this.props.location.pathname !== prevProps.location.pathname) { 
         $('html,body').animate({scrollTop:0},'slow');
         return false;
        }
      }
      render() {
        return (
                 this.props.children

            )
      }
    }

    export default withRouter(ScrollToTop)

在反应应用的根目录中添加此组件

index.js


    import React from 'react'
    import  ReactDOM from 'react-dom'
    import App from './jsx/App.jsx'
    import {browserHistory} from 'react-router'
    import {HashRouter as Routers} from 'react-router-dom'
    import ScrollToTop from './jsx/ScrollToTop.jsx'
    import {Provider} from 'react-redux';
    import {store} from './redux/store'
    ReactDOM.render((
         <Provider store={store}>
           <Routers>
           <ScrollToTop>
                <App />
           </ScrollToTop>
            </Routers>
            </Provider>
        ),document.getElementById('main-container'))