Skip to content

InfiniteScroll 无限滚动

用于滚动分页加载列表数据,内置加载中、没有更多、空状态和返回顶部能力。

示例

基础用法

属性示例

vue
<template>
  <mt-infinite-scroll
    v-model="list"
    height="500px"
    :up-scroll-page-size="20"
    :up-scroll-distance="80"
    :query-min-delay="300"
    :show-backtop="true"
    @query="handleQuery"
  >
    <div
      v-for="item in list"
      :key="item.id"
    >
      {{ item.id }}
    </div>
  </mt-infinite-scroll>
</template>

query 触发后需要根据请求结果调用组件实例暴露的 endSuccess(data, totalSize)endError(),组件会据此更新加载、失败、空状态和没有更多状态。

API

Props

属性名说明类型默认值
model-value最终渲染列表数据unknown[][]
height滚动区域高度number | string'100%'
up-scroll-page-num默认页码number1
up-scroll-page-size每页数量number10
up-scroll-enabled是否开启加载更多booleantrue
up-scroll-immediate是否立即检查并加载booleantrue
scroll-event-delay滚动节流时延,单位 msnumber30
up-scroll-distance触发上拉加载的阈值number75
hide-no-more-by-limit数据量小于等于该值时隐藏没有更多number5
loading-more-loading-text加载中文案string''
loading-more-no-more-text没有更多文案string''
empty-text空状态描述string''
empty-img空状态图片string''
empty-image-width空状态图片宽度number | string200
query-min-delay请求最短展示时间,单位 msnumber0
show-backtop是否显示返回顶部按钮booleanfalse

Events

事件名说明回调参数
update:model-value列表数据更新时触发(list: unknown[])
query需要加载数据时触发(page: { pageNum: number, pageSize: number })

Slots

插槽名说明作用域参数
default列表内容-
empty自定义空状态内容-

Exposes

名称说明类型
endSuccess标记加载成功并写入数据(data: ListItem[], totalSize: number) => Promise<void>
endError标记加载失败() => void
resetUpScroll重置分页并重新检查加载() => Promise<void>

注意事项

  • 监听 query 后必须通过 endSuccessendError 结束加载状态。
  • endSuccesstotalSize 用于判断是否还有下一页。
  • 开启 show-backtop 后,返回顶部按钮会绑定到组件的滚动容器。