PXD

useVirtualList

Manages virtualized rendering of large lists with scroll-to support.

Exports

function useVirtualList<Options extends VirtualListOptions>(
  containerRef: MaybeElementRef<HTMLElement>,
  options: Options,
): {
  virtualItems: ComputedRef<VirtualListItem[]>
  totalSize: ComputedRef<number>
  measureElement: (el: Element | ComponentPublicInstance | null) => void
  scrollToIndex: (index: number, opts?: ScrollToIndexOpts) => number
  scrollToOffset: (offset: number, opts?: ScrollToOffsetOpts) => number
  scrollBy: (delta: number, opts?: ScrollToOffsetOpts) => number
  getVirtualizer: () => Virtualizer
}

Types

interface VirtualListItem extends VirtualItem {
  key: string | number
}

interface VirtualListOptions {
  status?: 'loading' | 'finished' | 'error' | ''
  dataKey?: string
  items?: any[]
  itemSize?: number
  overScan?: number
  columnGap?: number
  columnCount?: number
  scrollPaddingStart?: number
  scrollPaddingEnd?: number
  onBottom?: () => void | Promise<void>
  bottomThreshold?: number
}

Params

NameTypeDescription
containerRefMaybeElementRef<HTMLElement>The scrollable container element
options.status'loading' | 'finished' | 'error' | ''Current list status
options.dataKeystringKey field name for item identification
options.itemsany[]The full list data array
options.itemSizenumberDefault item size in pixels
options.overScannumberNumber of extra items to render outside viewport
options.columnGapnumberGap between columns in pixels
options.columnCountnumberNumber of columns for grid layout
options.scrollPaddingStartnumberPixels kept free at the start edge when scrolling an item into view
options.scrollPaddingEndnumberPixels kept free at the end edge when scrolling an item into view
options.onBottom() => void | Promise<void>Callback fired when scrolled to bottom
options.bottomThresholdnumberThreshold in pixels for triggering onBottom

Source

Source