React Virtualized List - 如何在列表上使用 measureAllRows 方法?

React Virtualized List - How do you use the measureAllRows method on a List?

我正在尝试使用 react-virtualized 中的 WindowScroller 和 List 来呈现我的数据列表,但由于某种原因,只有一部分数据正在呈现。我已经阅读了文档,我相信我拥有所有必要的道具......感谢帮助!

将我的列表从 WindowScroller 中取出可以正确呈现所有内容,但我想保留 WindowScroller 以便为 parent 元素提供滚动控件。

我的数据集中有 100 个项目,但只有一部分正在渲染。

这是一个带有示例的沙箱:https://codesandbox.io/s/jolly-gagarin-vczki1?file=/src/App.js

更新#1: 我相信我已经找到了错误的原因!似乎 List 元素中的高度是问题所在;它不够大,因此切断了我的数据。因为我的List没有固定的开头高度(高度完全取决于children的个数),所以我想我需要一种方法来动态计算List的高度。我确实找到了一个名为 measureAllRows 的用于列表元素的方法,但我无法让它工作:((请参阅上面的沙箱)

更新#2: 我找到了一种非常 hacky 的方法来做到这一点;通过将 List 元素的高度属性设置为 Infinity,我可以渲染所有项目。这感觉不是解决问题的好方法,但它确实解决了我的动态列表高度问题。

更新#3: 下面的答案在仅使用 AutoSizer 时有所帮助,但我很好奇......如果我像这样将我的 AutoSizer 放入 WindowScroller:https://codesandbox.io/s/ecstatic-sunset-g4k3ly?file=/src/App.js,我如何才能实现类似的修复来显示我的所有数据?

我也遇到了类似的问题,这对我有用,在你的代码中尝试删除 autoheight 参数并从 autosizer.

获取高度

参考: https://codesandbox.io/s/recursing-pine-2w2m8f?file=/src/App.js

我可以说问题出在 WindowScroller 组件的父 div 之一导致此行为。

无法将溢出 属性 设置为自动以使 WindowScroller 起作用。如果您尝试只执行 windowScroller 部分而没有模态 window 它会按预期工作。

https://codesandbox.io/s/elastic-ritchie-k938m0?file=/src/App.js