据我所知,按下浏览器的后退按钮会触发
window.history.back()
操作,仅此而已。为解决这个问题,我在应用程序的上下文中实现了一个变量来保存scrollY值,然后在我正在尝试渲染的组件(列表组件)的
componentWillMount
(或useEffect
)中,我将滚动位置设置为上下文中设置的值。我的解决方案的详细信息在此处,因为我已经基于这个stackoverflow帖子编写了整个代码: 如何在下一个js中在返回时更改滚动行为?
我已经通过一些日志检查了值,并且滚动位置在上下文中正确保存,但是由于我正在使用窗口事件监听器,因此它在列表组件呈现后将值设置为零。
在我的代码中,我没有使用任何类型的滚动配置,所以我想知道这种行为是否是Next.js或React的某种默认行为。当用户点击浏览器的后退按钮时会发生这种情况,但我是Next.js的新手,我不知道是否漏掉了什么或者这个问题是否与React或Next.js本身有关。
useEffect
钩子方面表现不同。有太多细节无法在此评论中说明,但在我的情况下,Firefox调用useEffect
并重置为初始状态,Chrome不调用任何钩子,并将状态恢复到页面(您要返回的页面)离开时的状态。 - kca