与路由器一起使用顶部滚动时,如何保留浏览器提供的滚动位置?

时间:2019-05-30 07:50:04

标签: reactjs scroll reach-router

当用户使用浏览器导航返回时,我想保留上一页的滚动位置,而当浏览链接时,我想保留到上一页。

我正在按照answer about scroll to top in reach-router中的建议使用ScrollToTop组件。

// ScrollToTop.js
import React from 'react'

export const ScrollToTop = ({ children, location }) => {
  React.useEffect(() => window.scrollTo(0, 0), [location.pathname])
  return children
}

该组件按预期方式工作:当我加载另一个页面时,它会滚动到顶部,但是如今,现代的浏览器可以保留历史上页面的先前滚动位置。因此,如果我在浏览器中单击“后退”按钮,它将带我到上次停止滚动的位置到上一页。

但是,在使用ScrollToTop时,即使我使用后退按钮返回,它也会滚动到顶部。

如何将其配置为仅在浏览链接时滚动到顶部,否则将滚动条保持在先前位置?

0 个答案:

没有答案