Capítulo 3 de 20
The React adapter exposes useVirtualizer for an element scroll container and useWindowVirtualizer for the browser window. Both return a Virtualizer instance whose items are rendered by ordinary React JSX.
useVirtualizer: Creates a virtualizer driven by getScrollElement.useWindowVirtualizer: Creates a virtualizer driven by window scrolling.useRef and returned from getScrollElement.getVirtualItems(): Supplies the current items to map in JSX.useFlushSync: Controls whether scroll updates use synchronous React flushing.directDomUpdates: Allows direct DOM positioning for high-frequency scrolling when requirements are met.directDomUpdatesMode: Selects the direct-update behavior described by the adapter.const parentRef = React.useRef<HTMLDivElement>(null)
const rowVirtualizer = useVirtualizer({
count: 10000,
getScrollElement: () => parentRef.current,
estimateSize: () => 35,
})
return (
<div ref={parentRef} style={{ height: 400, overflow: 'auto' }}>
<div style={{ height: `${rowVirtualizer.getTotalSize()}px`, position: 'relative' }}>
{rowVirtualizer.getVirtualItems().map((virtualRow) => (
<div
key={virtualRow.key}
style={{
position: 'absolute',
transform: `translateY(${virtualRow.start}px)`,
height: `${virtualRow.size}px`,
width: '100%',
}}
>
Row {virtualRow.index}
</div>
))}
</div>
</div>
)
useWindowVirtualizer only when the window owns scrolling.