Composables

usePdfKitVirtualScroll

Virtual scrolling untuk dokumen besar.

Menyediakan virtual scrolling untuk rendering dokumen besar secara efisien.

Penggunaan

const containerRef = ref<HTMLElement | null>(null)
const totalItems = ref(100)
const itemHeight = ref(800)

const {
  visibleItems,
  startIndex,
  endIndex,
  scrollTop,
  onScroll,
  totalHeight,
  offsetTop,
  scrollToItem,
  currentVisiblePage,
} = usePdfKitVirtualScroll({
  totalItems,
  itemHeight,
  containerRef,
  overscan: 2,
})

Opsi

OpsiTipeDefaultDeskripsi
totalItemsRef<number>wajibTotal jumlah item (halaman)
itemHeightRef<number>wajibPerkiraan tinggi setiap item
containerRefRef<HTMLElement | null>wajibReferensi ke kontainer yang dapat digulir
overscannumber2Item ekstra yang dirender di atas/bawah viewport

totalItems, itemHeight, dan containerRef bersifat wajib dan harus berupa ref Vue, bukan nilai biasa. :::

Nilai yang Dikembalikan

PropertiTipeDeskripsi
visibleItemsRef<number[]>Indeks item yang akan dirender
startIndexRef<number>Indeks item pertama yang terlihat
endIndexRef<number>Indeks item terakhir yang terlihat
scrollTopRef<number>Posisi gulir saat ini
onScroll() => voidHandler gulir kontainer
totalHeightRef<number>Total tinggi yang dapat digulir
offsetTopRef<number>Offset untuk memposisikan item yang terlihat
scrollToItem(index: number) => voidGulir ke item tertentu
currentVisiblePageRef<number>Halaman yang terlihat saat ini (berbasis 1)

Contoh

<template>
  <div ref="containerRef" class="h-[600px] overflow-auto" @scroll="onScroll">
    <div :style="{ height: `${totalHeight}px`, position: 'relative' }">
      <div
        v-for="index in visibleItems"
        :key="index"
        :style="{
          position: 'absolute',
          top: `${index * itemHeight - offsetTop}px`,
          height: `${itemHeight}px`,
        }"
      >
        <!-- Render halaman {{ index + 1 }} -->
      </div>
    </div>
  </div>
</template>

<script setup>
const containerRef = ref(null)
const totalItems = ref(100)
const itemHeight = ref(800)

const {
  visibleItems,
  totalHeight,
  offsetTop,
  onScroll,
  scrollToItem,
} = usePdfKitVirtualScroll({
  totalItems,
  itemHeight,
  containerRef,
})

// Gulir ke halaman 50
scrollToItem(49)
</script>
Copyright © 2026