Capítulo 12 de 20
This React example uses Pretext to estimate text-heavy message heights before DOM measurement. It recalculates width-dependent layout on resize, clears caches after fonts load, and keeps TanStack Virtual responsible for scrolling and range extraction.
const rowVirtualizer = useVirtualizer({
count: messages.length,
estimateSize: React.useCallback(
(index) => estimateMessageHeight(messages[index]!, viewportWidth),
[fontVersion, viewportWidth],
),
getItemKey: React.useCallback((index) => messages[index]!.id, []),
getScrollElement: () => parentRef.current,
})
{rowVirtualizer.getVirtualItems().map((virtualRow) => (
<div
key={virtualRow.key}
style={{
height: `${virtualRow.size}px`,
transform: `translateY(${virtualRow.start}px)`,
}}
>
<article className="message-bubble">...</article>
</div>
))}
prepare() by text and typography inputs.layout() when viewport width changes.resizeItem for non-text content.