【发布时间】:2019-06-10 22:25:40
【问题描述】:
我的用例是当用户导航回各自的(父)路由时,在 React 组件中恢复 <div> 的滚动位置。我使用onScroll 跟踪<div> 的滚动位置。我的想法是将滚动位置保存在历史状态。可以在滚动事件处理程序中使用更新的状态对象调用history.replace(),但性能很差(我假设history.replace() 强制组件重新渲染)。
我还尝试在componentWillUnmount() 中调用history.replace()(同时将滚动位置保存为组件的实例属性)。然而,这为时已晚,因为 history.location 已经更改为新位置。
历史监听器 (history.listen()) 也是如此。
是否有替代方法来实现滚动位置恢复?
【问题讨论】:
标签: javascript reactjs react-router