美文网首页
react-router 位置问题

react-router 位置问题

作者: mengxr | 来源:发表于2017-07-21 02:49 被阅读382次

    问题描述

    • 问题1:
      • 滚动一个长页面A
      • 点击一个Link 进入到另外一个长页面B
      • 长页面B没有滚动到顶部
    • 问题2:

    期望情况

    • A到B,B页面滚动到顶部
    • B返回到A时页面停留在原来位置

    解决方案

    • 利用react-router提供的onUpdate事件
    <Router onUpdate={() => window.scrollTo(0, 0)} history={createHashHistory()}>
      ...
    </Router>
    
    • https://github.com/ReactTraining/react-router/issues/2019
    • 缺点可以达到期望一,但是无法到达期望二
    • 引入react-router-scroll
    • 达到期望一,二
    • 缺点:引入三方包,得看用法
    • 利用history.listen监听每次router改变,根据location.action分类处理(推荐
    hashHistory.listen(location => {
        setTimeout(() => {
            //浏览器前进后退
            if (location.action === 'POP') { return }
            // Use setTimeout to make sure this runs after React Router's own listener
            window.scrollTo(0, 0);
        })
    })
    

    相关文章

      网友评论

          本文标题:react-router 位置问题

          本文链接:https://www.haomeiwen.com/subject/wkdskxtx.html