当从一个页面导航到另一个页面时,我希望用户自动滚动到顶部,即 scrollTo(0, 0)
。
根据react-router
docs on scroll restoration推荐的方法是设置一个组件 ScrollToTop
并将您的路由包装在其中。
虽然这很有效,并且对于嵌套在 ScrollToTop
组件中的任何路由,用户都会滚动到顶部,但如果该组件放置在 Switch
组件中,则 Switch
不再像 Switch 那样工作;这意味着它将呈现它匹配的所有路由,而不是第一个。
或者,将 ScrollToTop
放在 Switch
之外,它不再将用户滚动到顶部。
版本:react-router-v4
最佳答案
我不确定具体关于滚动,但你可以将监听器附加到 browserHistory
这可能是一种简单的方法(我不认为 onUpdate
适用于 v4):
const browserHistory = createBrowserHistory();
browserHistory.listen((location, action) => {
window.scrollTo(0, 0);
});
<Router history={browserHistory} />
关于javascript - 使用 Switch (react-router) 时滚动到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46868243/