需要使元素在调整大小时可见。替代setTimeout吗?

时间:2018-10-03 00:35:12

标签: react-virtualized

我们的项目涉及在屏幕上显示文档。我们使用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")将停留在屏幕中央

不幸的是,用户可以调整窗口的大小,这会使反馈元素移离屏幕中心。

我们的解决方案

为简化起见,我们的解决方案是:

  1. 调整大小后,致电elem.scrollIntoView()

问题

底层的<List>组件有时会在 elem.scrollIntoView()成功之后完成渲染。因此,该元素最终再次从页面中心向上或向下移动。


目前,我们对此的最佳补救方法基本上只是setTimeout(() => elem.scrollIntoView(), 10)

但是setTimeout很糟糕。是否可以使用某种回调方法来避免使用setTimeout

该“梦想回调”将为onCompletionOfRenderTriggeredByResize()。是否存在类似的东西?

这是CodeSandbox链接(仅适用于Chrome):

Edit react-virtualized List with width 100%

0 个答案:

没有答案