我们的项目涉及在屏幕上显示文档。我们使用react-virtualized
来显示该文档,其中可能会有这样的文本:
------ Row 1 ------
<div id="abc">Some text<div>
<div id="def">Some more text</div>
------ Row 2 ------
<div id="ghi">Some text<div>
<div id="jkl">Some more text</div> <---- Keep this element in center of screen
------ Row 3 ------
...
我们要确保给定的元素(例如id="jkl"
)将停留在屏幕中央。
不幸的是,用户可以调整窗口的大小,这会使反馈元素移离屏幕中心。
为简化起见,我们的解决方案是:
elem.scrollIntoView()
底层的<List>
组件有时会在 elem.scrollIntoView()
成功之后完成渲染。因此,该元素最终再次从页面中心向上或向下移动。
目前,我们对此的最佳补救方法基本上只是setTimeout(() => elem.scrollIntoView(), 10)
。
但是setTimeout
很糟糕。是否可以使用某种回调方法来避免使用setTimeout
?
该“梦想回调”将为onCompletionOfRenderTriggeredByResize()
。是否存在类似的东西?
这是CodeSandbox链接(仅适用于Chrome):