用途:在 Svelte 项目里为 TanStack Table 的最终模型(行模型与可见列)叠加 TanStack Virtual 渲染层,实现长列表/宽表格的虚拟滚动。Virtual 只是渲染层,不是 tableFeatures 插件。
主要能力:用 createVirtualizer 创建虚拟器,通过 count、getScrollElement、estimateSize、getItemKey、overscan 等选项控制虚拟范围;行用 table.getRowModel().rows,列用 table.getVisibleLeafColumns(),过滤、排序、展开或可见性变化时需重算计数。
使用方式:createVirtualizer 返回 Svelte store,适配器不追踪 getter 选项,因此需用 $effect 配合 get(store).setOptions(...) 推送响应式 count 与绑定的滚动元素。标记中通过 $rowVirtualizer 自动订阅调用方法,脚本中用 get(rowVirtualizer)。CSS 需与测量一致:单一滚动容器、总高度占位、绝对定位项,配合固定估算或 measureElement;语义表格动态行应参考维护中的 grid/flex 示例。无限滚动时比较最后一个虚拟项与已取行数,仅在还有服务端行且无进行中请求时请求下一页。
限制与常见错误:不要虚拟化原始数据(会忽略 Table 的过滤、排序、分组、展开、分页决策);不要期望 getter 选项保持响应式;不要省略几何契约(Virtual 不提供占位高度、transform、粘性区域或列宽)。具体 API 可查看已安装的 @tanstack/svelte-table/dist/ 与 @tanstack/svelte-virtual/dist/。