我的用例是,当用户导航回相应的(父)路由时,恢复React组件中<div>
的滚动位置。我使用onScroll
跟踪<div>
的滚动位置。我的想法是将滚动位置保存在历史状态中。可以在滚动事件处理程序中使用更新的状态对象调用history.replace()
,但性能很差(我假设history.replace()
会强制组件重新呈现)。
我还尝试在componentWillUnmount()
中调用history.replace()
(同时将滚动位置保存为组件的实例属性)。然而,这已经太晚了,因为history.location
已经被更改到了新的位置。
历史记录侦听器(history.listen()
)也是如此。
是否有实现滚动位置恢复的替代方法?
发布于 2019-06-11 06:45:57
从你的描述来看,你可能正在与React和他们对历史API的使用作斗争。
另一种解决方案可能是仅存储历史中的数组位置,这将只需要一次替换,并管理更新以在(例如) localStorage内保存的数组中滚动值本身。
希望这能对你有所帮助。
https://stackoverflow.com/questions/56534250
复制相似问题