当从一个页面导航到另一个页面时,我希望用户自动滚动到顶部,即 scrollTo(0, 0)
.
根据 react-router
docs on scroll restoration,推荐的方法是设置一个组件 ScrollToTop
并将您的路由包装在其中 .
虽然这很有效,并且用户可以滚动到嵌套在 ScrollToTop
组件中的任何路径的顶部,但如果组件放在 Switch
组件中,则 Switch
不再像Switch那样起作用;意味着它将渲染它匹配的所有路由而不是第一个路由 .
或者,将 ScrollToTop
放在 Switch
之外,它不再将用户滚动到顶部 .
版本: react-router-v4
3 回答
我不确定滚动,但你可以附加一个监听器
browserHistory
这可能是一个简单的方法(我不认为onUpdate
适用于v4):我设法使用
react-router-v4
scroll Restoration并将ScrollToTop放在Switch
之外来解决这个问题 . 还记得使用withRouter
否则它将无法正常工作 .我有同样的问题,我所做的是每当更新它将带领用户
scrollTo(0,0)
如果以上不起作用:
在 react-router-v4 scroll Restoration
这很容易处理一个组件,它将在每个导航上滚动窗口,确保将其包装在withRouter中以使其能够访问路由器的props:
然后将其呈现在应用程序的顶部,但在路由器下方
上面的代码是从React-Router web guides复制的