VirtualScroll.vue 1.6 KB
Newer Older
陈文彬 已提交
1 2 3 4 5 6 7 8 9 10 11
<template>
  <div class="p-4 virtual-scroll-demo">
    <Divider>基础滚动示例</Divider>
    <div class="virtual-scroll-demo-wrap">
      <VirtualScroll :itemHeight="41" :items="data" :height="300" :width="300">
        <template v-slot="{ item }">
          <div class="virtual-scroll-demo__item">{{ item.title }}</div>
        </template>
      </VirtualScroll>
    </div>

N
nebv 已提交
12
    <Divider>即使不可见,也预先加载50条数据,防止空白</Divider>
陈文彬 已提交
13
    <div class="virtual-scroll-demo-wrap">
N
nebv 已提交
14
      <VirtualScroll :itemHeight="41" :items="data" :height="300" :width="300" :bench="50">
陈文彬 已提交
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
        <template v-slot="{ item }">
          <div class="virtual-scroll-demo__item">{{ item.title }}</div>
        </template>
      </VirtualScroll>
    </div>
  </div>
</template>
<script lang="ts">
  import { defineComponent } from 'vue';
  import { VirtualScroll } from '/@/components/VirtualScroll/index';

  import { Divider } from 'ant-design-vue';
  const data: any[] = (() => {
    const arr: any[] = [];
    for (let index = 1; index < 20000; index++) {
      arr.push({
        title: '列表项' + index,
      });
    }
    return arr;
  })();
  export default defineComponent({
    components: { VirtualScroll, Divider },
    setup() {
      return { data: data };
    },
  });
</script>
<style lang="less" scoped>
  .virtual-scroll-demo {
    &-wrap {
      display: flex;
      margin: 0 30%;
      background: #fff;
      justify-content: center;
    }

    /deep/ &__item {
      height: 40px;
      padding: 0 20px;
      line-height: 40px;
      border-bottom: 1px solid #ddd;
    }
  }
</style>