javascript - react-window中的自定义滚动元素
问题描述
我想创建虚拟化列表。我有 100 000 个项目,但只会呈现 20 个项目(取决于窗口高度)。当用户滚动时,不会添加新项目,它只会将道具更改为那些不在屏幕上的道具。所以用户看到仍然正确的项目。
我正在使用react-window库作为react-virtualized的替代方案:
import { FixedSizeList as List } from 'react-window'
...
const items = new Array(100000).fill({ title: '' })
const Item = ({ index, style }) => (
<div key={index} style={style}>
Item number {index}.
</div>
)
const PageView = () => (
<div style={{ overflowY: 'auto', height: '100vh' }}>
<AnotherComponent />
<AnotherComponent2 />
<List itemSize={50} height={300} itemCount={items.length}>
{Item}
</List>
<AnotherComponent3 />
</Scrollable>
)
在这种情况下,根div
是全屏可滚动元素并且List
是 300px 高度也是可滚动元素。要从中删除滚动,List
我必须根据项目数设置高度List
:
<List itemSize={50} height={items.length * 50} itemCount={items.length}>
现在滚动很好(可滚动只是 root div
),但是List
一次渲染所有 100 000 个项目,因为它们适合List
. 有什么方法可以List
使用自定义滚动元素(或窗口),就像在这个反应虚拟化示例中一样,WindowsScroller
或者我必须使用react-virtualized
?
解决方案
推荐阅读
- angularjs - AngularJS 1.5 websocket库安装问题
- r - 提取与向量中的索引最近的相邻索引
- android - 在 Vertical ViewPager 中实现 ViewPager
- reactjs - redux Action 调用其他动作失败
- vb.net - 使用 vb.net 2015 和 oracle 11g 生成自动编号计数器 0001
- c# - 如何让一个窗口在 .Net 中始终保持在顶部?(任务视图)
- c# - 如何删除此 cookie?ASP.NET MVC
- python - 在装饰器中返回 func 或 func()
- visual-studio-setup-proje - 从 Visual Studio 社区安装程序生成安装项目
- analytics - 如何设置名称中带有点的上下文变量?