重新渲染后保持滚动

IT技术 reactjs scroll redux
2021-05-10 07:14:21

我有很多复选框的下拉列表,所以这个容器有滚动。但是当我点击任何复选框时 - 它会选择\取消选择自己,然后状态发生变化。

所以问题是在重新渲染后这个容器又回到了顶部。渲染后是否可以保持容器的滚动而不将其保存到状态?

2个回答

您可以在提交阶段之前保存滚动位置的“快照”。

getSnapshotBeforeUpdate()显示了您正在寻找的类型。

文档示例在getSnapshotBeforeUpdate生命周期方法中保存当前滚动位置,然后使用snapshot传递给componentDidUpdate(prevProps, prevState, snapshot)作为最后一个参数来恢复滚动位置。

它不需要根据您的要求创建状态来保存滚动位置。

这是因为您正在重新呈现复选框的完整列表。

有两种可能的方法:

  1. 仅重新渲染相关复选框
  2. 保存容器的滚动位置并在重新渲染组件后更新它。

不幸的是,您尚未添加任何代码示例,因此无法共享代码更改。