一、Vant上拉加载更多
1、vant的上拉加载更多组件可以快速的创建一个带有加载状态的无限列表。只需要使用一个v-for指令渲染列表。使用步骤如下:
// HTML代码
// script代码
export default {
data() {
return {
list: [],
page: 1,
pageSize: 10,
finished: false
};
},
onLoad() {
this.page++;
setTimeout(() => {
this.getData();
}, 1000);
},
getData() {
fetch(`/api/data?page=${this.page}&pageSize=${this.pageSize}`).then(res => {
return res.json();
}).then(result => {
this.list.push(...result.data);
this.finished = (this.list.length >= result.totalCount);
});
}
}
2、在代码中,我们使用van-list组件来渲染列表,接着在data选项里添加page、pageSize和finished三个变量;onLoad函数用来加载更多数据,getData函数从后端请求数据,并且在返回结果后将数据添加到list数组中。当list数组长度等于或者大于后端返回结果的totalCount时,则将finished设为true,表示加载完毕。
二、Vant上拉加载下拉刷新怎么用
1、除了上拉加载更多,vant还为我们提供了下拉刷新组件,使用起来也非常简单直观。只需要使用van-pull-refresh组件,代码如下:
// HTML代码
// script代码
export default {
data() {
return {
list: [],
loading: false
};
},
onRefresh() {
setTimeout(() => {
this.getData();
this.loading = false;
}, 1000);
},
getData() {
fetch(`/api/data?page=1&pageSize=10`).then(res => {
return res.json();
}).then(result => {
this.list = result.data;
});
}
}
2、在代码中,我们使用van-pull-refresh组件包裹van-list组件。当下拉刷新触发时,会调用onRefresh函数,先设置loading为true,然后从后端请求数据,并且在返回结果后将数据设置到list数组中。在代码中,我们使用setTimeout函数模拟后端请求数据的耗时。
三、Vant上拉加载下拉防抖查询
1、在实际使用中,我们可能需要下拉刷新时发起一次数据查询请求,或者在用户输入搜索关键字时发起一次查询请求。为了避免频繁的请求,我们可以使用防抖或者节流函数。
2、比如在下拉刷新时发起数据查询请求时,我们可以使用lodash库提供的防抖函数_.debounce,代码如下:
// HTML代码
// script代码
import { debounce } from 'lodash';
export default {
data() {
return {
list: [],
query: '',
loading: false,
search: debounce(this.onSearch, 500)
};
},
onRefresh() {
setTimeout(() => {
this.getData();
this.loading = false;
}, 1000);
},
onSearch() {
fetch(`/api/data?q=${this.query}&page=1&pageSize=10`).then(res => {
return res.json();
}).then(result => {
this.list = result.data;
});
},
getData() {
fetch(`/api/data?page=1&pageSize=10`).then(res => {
return res.json();
}).then(result => {
this.list = result.data;
});
}
}
3、在代码中我们使用了lodash库的debounce函数,在data选项里结合onSearch函数创建了search变量。当用户在搜索框输入时会调用search变量,从而防抖调用onSearch函数。在onSearch函数中,我们从后端请求数据,并且在返回结果后将数据设置到list数组中。
四、Uniapp上拉加载更多
1、如果你在uniapp中使用vant,则需要注意的是,由于uniapp是跨平台开发框架,不能直接使用浏览器的window对象获取页面高度或者滚动距离。所以需要使用uni-app提供的api来实现上拉加载更多,代码如下:
// HTML代码
// script代码
export default {
data() {
return {
list: [],
page: 1,
pageSize: 10,
finished: false
};
},
onLoad() {
this.page++;
uni.request({
url: `/api/data?page=${this.page}&pageSize=${this.pageSize}`,
success: (res) => {
let result = res.data;
this.list.push(...result.data);
this.finished = (this.list.length >= result.totalCount);
}
});
}
}
2、在代码中,我们使用uniapp提供的api实现上拉加载更多。在data选项里添加page、pageSize和finished三个变量,在onLoad方法中使用uni.request方法发送请求,从后端获取数据,并且将数据添加到list数组中。当list数组长度等于或者大于后端返回结果的totalCount时,将finished设为true表示加载完毕。
五、VueVant下拉加载
1、如果你使用Vue和Vant来实现下拉加载,那么可以使用better-scroll库提供的下拉刷新和上拉加载更多插件。具体使用方法如下:
// HTML代码加载中...
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/187050.html
微信扫一扫
支付宝扫一扫