Skip to content

List 列表

介绍

滚动加载,用于展示长列表,当列表即将滚动到底部/顶部时,会触发事件并加载更多列表项。

基础用法

需要搭配 scrollerscrollbar 组件使用,在页面滚动到一定阈值后触发加载下一页。

html
<vd-scroller name="page" scroll-y>
  <vd-list
    v-model:loading="state.loading"
    v-model:error="state.error"
    :finished="state.finished"
    scroller="page"
    @load="hanleLoad"
  >
    <view v-for="item in state.data" :key="item.id" class="item">
      {{ item.name }}
    </view>
  </vd-list>
</vd-scroller>
ts

const state = reactive({
  data: [] as any[],
  error: false,
  loading: false,
  finished: false,
});

// 模拟请求数据
async function getListData() {
  await timeout(300);
  const len = state.data.length;

  if (len >= 50) {
    return [];
  }

  return Array.from({ length: 5 }, num => num + len);
}

// 模拟加载下一页
async function hanleLoad() {
  const data = await getListData();

  if (!data.length) {
    state.finished = true; // 没有更多数据
  } else {
    state.data = [...state.data, ...data];
  }

  state.loading = false;
}
scss
.item {
  padding: $vd-padding-md;
  border-radius: $vd-radius-md;
  background: $vd-background;
  color: $vd-color-text;
  font-size: $vd-font-size-md;

  & + .item {
    margin-top: $vd-padding-sm;
  }
}

API

Props

参数说明类型默认值
loading是否处于加载状态,加载过程中不触发 load 事件booleanfalse
error是否加载失败,加载失败后点击错误提示可以重新触发 load 事件booleanfalse
finished是否已加载完成,加载完成后不再触发 load 事件booleanfalse
offset滚动条与顶/底部距离小于 offset 时触发 load 事件string | number200
direction滚动触发加载的方向,可选值为 up downListDirection'down'
show-loding是否展示加载中提示booleantrue
loading-type加载中类型,同 loading 组件加载类型LoadingType-
loading-text加载中状态时的提示文案string-
show-error是否展示加载失败提示booleantrue
error-text加载失败状态时的提示文案string-
show-finished是否展示加载完成后提示booleantrue
finished-text加载完成后状态时的提示文案string-
immediate是否在初始化时立即执行滚动位置检查booleantrue
disabled是否禁用滚动加载booleanfalse
scroller监听滚动事件的滚动条节点名称,默认是监听最近的可 y轴 滚动的滚动条string-

代替原始 Props

参数说明类型默认值
custom-id根节点idstring-
custom-class根节点类名ClassValue-
custom-style根节点样式StyleValue-

Events

事件名说明回调参数
click点击时触发MouseEvent
load加载下一页时触发-

Slots

名称说明
default自定义内容

赣ICP备2025061025号-1