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加载下一页时触发-
update:loading加载状态更新时触发boolean
update:error错误状态更新时触发boolean

Slots

名称说明
default自定义内容
loading加载中提示
error加载失败提示
finished加载完成提示

Expose

方法名说明参数返回值
check检查是否到达触发位置-Promise<void>

类型定义

组件导出以下类型定义:

ts
import type {
  ListDirection,
  ListInstance,
  ListThemeVars,
} from 'vital-design';

主题变量

通过 ConfigProvidertheme-vars.list 覆盖:

名称说明默认值
status-color状态区文字颜色$vd-color-text-3
status-font-size状态区字号$vd-font-size-md
status-line-height状态区行高$vd-line-height-md
status-padding状态区(loading / error / finished)内边距$vd-padding-sm $vd-padding-md
status-loading-icon-size加载图标尺寸$vd-font-size-lg
status-loading-icon-gap加载图标与文案间距$vd-gap-xs

赣ICP备2025061025号-1