当用户使用浏览器导航返回时,我想保留上一页的滚动位置,而当浏览链接时,我想保留到上一页。
我正在按照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
时,即使我使用后退按钮返回,它也会滚动到顶部。
如何将其配置为仅在浏览链接时滚动到顶部,否则将滚动条保持在先前位置?