基础用法
List 组件通过loading和finished两个变量控制加载状态,当组件滚动到底部时,会触发load事件并将loading设置成true。此时可以发起异步操作并更新数据,数据更新完毕后,将loading设置成false即可。若数据已全部加载完毕,则直接将finished设置成true即可。
由于手机的屏幕长度限制,并且如果获取的列表数据有很多条(比如100条),那么一次性加载数据很消耗运行速度。这里的方法设置两个参数,一个参数控制每次下拉手机屏幕加载一部分数据(每次加载10条),另外一个参数设置,每次刷新记载的过滤之前加载过的数据(过滤之前加载的10条,不在从数据库中获取)。瀑布流滚动加载,用于展示长列表,当列表即将滚动到底部时,会触发事件并加载更多列表项。手机下滑多少,就加载多少条数据。
- 主要后端传参的字段:
take(每次加载获取多少条数据,初始化数值,列表数据足够填满手机屏幕就好。作用:每次下滑手机获取多少条数)
skip(再次获取数据时跳过多少条数据,一般都是跳过take*skip条)。
<van-list
v-model="loading"
:finished="finished"
finished-text="没有更多了"
@load="onLoad"
:immediate-check="false"
v-if="dataList.length"
></van-list>
data() {
return {
Skip: 0,
Take: 8,
},
async getList() {
let data = {
Skip: this.Skip * this.Take,
Take: this.Take,
}
const res = await request("/V1/wap/commissionRecord/List", data);
this.dataList = this.dataList.concat(res.Result.Results);
this.finished = res.Result.Results.length < this.Take
this.loading = false;
},
onLoad() {
if (!this.finished) {
this.Skip += 1;
this.getList();
}
}