我现在正在尝试在页面刷新时滚动到顶部。到目前为止,我已经能够在路线更改时实现滚动到顶部,但不能在页面刷新时**-不知何故,react总是恢复到它以前的位置**。我如何防止这种情况发生?
这就是我实现滚动到顶部的方法(本以为componenDidMount()
中的window.scrollTo(0, 0)
会有帮助,但没有):
class ScrollToTop extends Component {
componentDidMount() {
window.scrollTo(0, 0);
}
componentDidUpdate(prevProps, prevState, snapshot) {
if (this.props.location.pathname !== prevProps.location.pathname) {
window.scrollTo(0, 0);
}
}
render() {
return null;
}
}
export default withRouter(ScrollToTop);
class App extends Component {
render() {
return (
<BrowserRouter>
<ScrollToTop/>
<Header/>
<Home/>
<Projects/>
<div className="follow-cursor"/>
</BrowserRouter>
);
}
}
export default App;
3条答案
按热度按时间qlzsbp2j1#
您可以使用一些纯JS来实现这一点:
这将使页面滚动到顶部之前,它重新加载,所以一切都会很好,当重新加载结束。
jjhzyzn02#
在React-17.0.2中实现Scroll To Top的自定义组件的另一种方法是使用钩子:
步骤1:创建自定义组件:滚动到顶部.js
第二步:将ScrollToTop组件调用到Root中:
5ktev3wc3#
//在(App.js)中尝试此解决方案。对我有效。
useEffect(() => { window.history.scrollRestoration = 'manual' }, []);