components/virtuallist
레이아웃과 대용량 데이터 · 48 / 64

VirtualList

ui.widgets.VirtualList

대량의 균일한 높이 데이터 중 보이는 구간만 마운트합니다.

BEHAVIOR CONTRACT

item_count, item_height, overscan, 재사용, scroll offset이 안정적인 O(visible) 비용을 만듭니다.

RECORDED INTERACTION

harness가 목록을 스크롤해도 노드는 보이는 범위만 덮습니다.

examples/storybook/stories.zig:2944
pub fn buildVirtualList(scope: *ui.Scope, cx: *ui.Cx) anyerror!*ui.Node {
    const vl = try W.VirtualList(.{ .item_count = 1000, .item_height = 28, .width = 320, .height = 360 }).mount(scope, cx, vlRender);
    return vl.container;
}
GitHub에서 소스 보기examples/storybook/stories.zig:2944

Storybook에 있는 이 story의 원본 코드입니다(zenit 5f9add5+wip 2026-09-30). W는 ui.widgets이며, col / row / label은 Storybook 내부의 작은 레이아웃 헬퍼입니다.

zenit · 이중 라이선스오픈 소스 프로젝트는 GPL-3.0-only로 무료 사용할 수 있으며, 비공개 소스나 상용 제품에는 상용 라이선스가 필요합니다.작성자 연락처: zongyi.xzy#gmail.com (#을 @로 바꾸세요)zenit 5f9add5+wip 2026-09-30