Skip to content

LazyList 懒加载列表

具备下拉刷新功能的分页列表组件。

基本使用

html
<be-lazy-list v-model="list" @load="loadData" pullDownRefresh>
  <view class="list">
    <view class="item" v-for="item in list" :key="item.id">{{ item.title }}</view>
  </view>
</be-lazy-list>
ts
import { ref } from 'vue';

const list = ref<any[]>([]);

const loadData = (page: number, onLoadSuccess: Function, onLoadError: Function, first: boolean) => {
  // 模拟加载5页数据
  setTimeout(() => {
    if (page <= 5) {
      onLoadSuccess([
        {
          id: 3 * (page - 1) + 1,
          title: `数据${3 * (page - 1) + 1}`
        },
        {
          id: 3 * (page - 1) + 2,
          title: `数据${3 * (page - 1) + 2}`
        },
        {
          id: 3 * (page - 1) + 3,
          title: `数据${3 * (page - 1) + 3}`
        }
      ]);
    } else {
      onLoadSuccess(); // 或者onLoadSuccess([])
    }
  }, 1000);
};
scss
.list {
  width: 100%;
  padding: 0px 16px;

  .item {
    width: 100%;
    padding: 30px 0px;

    & + .item {
      border-top: 1px solid #eeeeee;
    }
  }
}

API

Props

属性名说明类型默认值
modelValue(v-model)列表数据any[][]
proxy是否开启触底监听代理。开启时,组件容器为<scroll-view>,宽高都为100%,撑满整个父元素。booleantrue
minHeight非代理模式下组件最小高度(避免高度坍塌)css min-height200rpx
autoLoad初始化时是否自动加载数据booleantrue
moreIcon加载更多自定义图标,为 false 则不显示boolean | Icon Propstrue
moreText加载更多自定义文本object{ loadmore: '加载更多', loading: '加载中…', nomore: '没有更多了' }
moreFontSize加载更多自定义字体大小css font-size26rpx
moreFontColor加载更多自定义字体颜色css color#999999
showEmptyTip数据为空时,是否显示提示booleantrue
emptyImageUrl空提示图片 URLstring-
emptyImageWidth空提示图片宽度(图片使用widthFix模式显示)css width200rpx
emptyText空提示文本string暂无内容
emptyFontSize空提示字体大小css font-size26rpx
emptyFontColor空提示字体颜色css color#aaaaaa
emptyFontTop空提示字体与图片的间距css margin-top50rpx
pullDownRefresh是否开启列表下拉刷新,当proxy=true时生效booleanfalse
refresherColor下拉刷新器主题色css color#aaaaaa

Events

事件名称说明回调参数
load加载数据。参数说明:page当前页数 onLoadSuccess加载成功回调函数,传入当前页数据,传入[]或者不传值表示已加载完全部数据 onLoadError加载失败回调函数 first是否首次加载数据(初始化或者重置后)(page: number, onLoadSuccess: (datas?: any[]) => void, onLoadError: () => void, first: boolean) => {}

Slots

插槽名说明slot props默认值
empty自定义空提示视图-
more自定义加载更多视图{ loading: boolean, finished: boolean, loadMore: () => void }
loading自定义初始化加载中视图,该插槽会传递给 ViewLoading 组件-
default列表视图-

Methods

方法名说明参数
loadMore加载更多数据() => void
reset重置组件状态并加载数据() => void
refresh触发下拉刷新,参数说明:clear下拉后是否立即清空列表数据(重置 v-model 值)(clear: boolean) => void