Skip to content

vDataLazy

数据懒加载指令(仅支持在vue3项目中使用)

引入版本

0.80.0

Demo

vue
<script setup lang="ts">
  import { vDataLazy } from '@wyfex/iutils'

  const list = ref<number[]>([])
  const loading = ref(false)

  const loadList = async (): Promise<void> => {
    loading.value = true
    console.log('进入视口,开始加载数据')
    try {
      // 模拟接口请求,替换为真实axios/fetch
      await new Promise<void>(resolve => setTimeout(resolve, 1200))
      list.value = [1, 2, 3, 4, 5]
    } catch (e) {
      console.error('请求异常', e)
    } finally {
      loading.value = false
    }
  }
</script>

<template>
  <div style="height: 100dvh">
    <UseLineTitle title="滚动往下看" />
  </div>

  <!-- 简写:直接传入回调函数 -->
  <ul v-data-lazy="loadList">
    <li v-if="loading">📦 数据加载中......</li>
    <li
      v-for="item in list"
      :key="item"
    >
      {{ item }}
    </li>
  </ul>

  <!-- 对象配置:rootMargin 提前100px就触发 -->
  <!-- v-data-lazy="{ callback: loadList, rootMargin: '100px' }" -->
</template>

基于 MIT 许可发布