react 单页面跳转 页面位置 前进页面滚动到顶部 返回页面滚动到上次浏览的位置
添加以下代码 完美解决
var offsetTop = 0;
var canPoP = true; //push可能会触发pop在这节流
hashHistory.listen(location => {
if (canPoP) {
canPoP = false;
if (location.action !== 'POP') {
//记住浏览器位置
offsetTop = getScrollOffset();
}
setTimeout(() => {
//浏览器前进后退
if (location.action === 'POP') {
if (offsetTop > 0) {
window.scrollTo(0, offsetTop)
};
return
}
window.scrollTo(0, 0);
}, 5)
setTimeout(function () {
canPoP = true;
}, 500);
}
})