rc-virtual-list 学习笔记

最近学习了一下 rc-virtual-list 这个组件,记录一下。

对于一个大的列表,例如,百数量级以上,Dom 的渲染会有很大的性能压力。这个组件通过只渲染可视区域内的部分组件,实际的 Dom 数量只在两位数,从而提高了性能。
它的 Dom 结构比较简单
Dom

  • 为了使用 virtual scroll, 必须提供 height 和 itemheight, 这两个高度
  • 这个组件的核心功能是如何计算出哪些组件是需要渲染的。
    • 首先它内部使用 useHeights hook 方法,将每个渲染的元素,以及高度依据 key 进行缓存,Map.
    • 然后它依据当前的 scrollTop,来计算出在可视区域内部的 items,
    • 接着调用 useChildren ,这个里面主要通过调用如下方法,也就是我们传递进去的 children 来将可视区域内的 item 渲染出来。第三个参数没有用,里面是个空对象。
export type RenderFunc<T> = (
  item: T,
  index: number,
  props: { style?: React.CSSProperties }
) => React.ReactNode;

当然这个组件还有其他的一些辅助功能,以上的就是它的核心,了解它就可以了。
它重要的几个参数,就像github列出的

  • data: items 也就是要展示的数据
  • component: 这个默认是 div, 你可以理解成,你的 item 的容器,相当于 ul 至于 li,
  • height: 这个是可视区域的高度。
  • itemHeight: 这个是每个 item 的高度,这个只是默认值,实际的高度可以不一样的。
  • itemKey: 这个是每个 item 的 key, 非常重要,可以是 item 数据的某一个 property, 也可以是一个函数(item)=>string
posted @   kongshu  阅读(3895)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示