# List 列表

# 介绍

视图容器,滑倒底部时触发事件,加载更多数据。

# 使用指南

# 下拉刷新和加载更多

<tms-list bind:load-more="loadMore" height="{{250}}" loading-status="{{loadingStatus}}" refresher-enabled
          refresher-triggered="{{refresherTriggered}}"
          bind:refresh-start="refresh">
    <view class="cell" wx:for="{{listsBasic}}" wx:key="index">
        {{index}}
    </view>
</tms-list>
Component({
  data: {
    lists: [1,2,3,4],
    pageIndex: 1,
    loadingStatus: 'ready',
    refresherTriggered: false,
  },
  methods: {
    loadMore() {
      const { lists, pageIndex } = this.data;
      if (pageIndex < 5) {
        this.setData({
          loadingStatus: 'loading',
        });
        // 模拟获取远程数据
        setTimeout(() => {
          this.setData({
            lists: lists.concat([1,2,3,4]),
            pageIndex: pageIndex + 1,
            loadingStatus: 'ready',
          });
        }, 1000);
      } else {
        this.setData({
          loadingStatus: 'loadingEnd', // 如果为loadingError,显示加载失败。
        });
      }
    },
    refresh() {
      this.setData({
        loadingStatus: 'disable', // 刷新时屏蔽加载更多
        refresherTriggered: true,
      });
      setTimeout(() => { // 模拟重新获取了数据
        this.setData({
          listsBasic: [1,2,3,4,5],
          loadingStatus: 'ready',
          refresherTriggered: false,
          pageIndex: 1,
        });
      }, 2200);
    },
  }
})

# 使用slot

<tms-list bind:load-more="loadMore" height="{{250}}" loading-status="{{loadingStatus}}" custom-loading-slot
          custom-loading-error-slot custom-loading-end-slot>
    <view class="cell" wx:for="{{lists}}" wx:key="index">
        {{index}}
    </view>
    <view slot="loadingEnd" class="loadEnd">
        我是有底线的
    </view>
    <view slot="loading" class="loadEnd">
        正在拼命加载
    </view>
    <view slot="loadingError" class="loadEnd">
        哎呀,出现了未知错误。
    </view>
</tms-list>

# API

下拉刷新功能基于小程序内置组件scroll-view,部分api请参阅官方文档 (opens new window)

属性 说明 类型 默认值 版本
height 容器高度,默认250像素 number 250
threshold 滚动到底部触发加载更多的阈值 number 80
loading-status 加载状态控制变量,详情查看下文。 string ready
custom-loading-slot 加载中元素使用自定义slot boolean false
custom-loading-error-slot 加载错误使用自定义slot boolean false
custom-loading-end-slot 全部加载完使用自定义slot boolean false
refresher-enabled 开启下拉刷新功能 boolean false
custom-refresh-slot 自定义下拉刷新顶部slot boolean false
refresher-triggered 刷新状态控制,具体查阅scroll-view文档 boolean false
refresher-threshold 触发刷新阈值,具体查阅scroll-view文档 number 45
refresher-default-style 默认下拉刷新样式,具体查阅scroll-view文档 string black
refresher-background 下拉刷新背景色,具体查阅scroll-view文档 string #FFF

loading-status的可选值列表:

说明
ready 初始状态,可触发加载的状态
disable 禁用加载,屏蔽事件,一般用于刷新时设置此状态
loading 正在加载中的状态,不会触发加载
loadingEnd 加载结束状态,不会触发加载
loadingError 加载错误状态,不会触发加载

# EVENTS

下拉刷新功能基于小程序内置组件scroll-view,部分api请参阅官方文档 (opens new window)

属性 说明 类型
bind:load-more 触发加载更多的事件 (event) => {}
bind:refresherpulling 自定义下拉刷新控件被下拉 (event) => {}
bind:refresherrefresh 自定义下拉刷新被触发 (event) => {}
bind:refresherrestore 自定义下拉刷新被复位 (event) => {}
bind:refresherabort 自定义下拉刷新被中止 (event) => {}

# CSS变量

// 加载中模块高度
--list-loading-area-height: 120rpx;
// 加载中模块背景色
--list-loading-area-background: none;
// 加载中模块图标颜色
--list-loading-icon-color: #417FF9;
// 加载中模块图标大小
--list-loading-icon-size: 60rpx;
// 加载中模块文本颜色
--list-loading-text-color: rgba(0, 0, 0, .8);
// 加载中模块文本大小
--list-loading-text-font-size: 32rpx;

# FAQ