其实这两个功能没有多复杂,很多初学者以为是很高大上的功能,不知道怎么做。说白了就是把分页改成ajax形式的了。本人也属新手,欢迎大家在评论区一起留言讨论。
配置
下拉刷新配置
根据项目需求选择是进行全局配置
还是单页面配置
。全局配置在app.json
的window
中,页面配置在对应pages
的.json
中。
{
"enablePullDownRefresh": true, // 是否开启下拉刷新
"backgroundTextStyle":"dark" // 下拉 loading 的样式,仅支持dark/light
}
// 自定义下拉刷新样式可以使用 scroll-view 进行布局。
关闭下拉刷新动画方法
wx.stopPullDownRefresh()
上拉加载配置
上拉加载只用配置触底距离就可以了,当然不配置也可以,默认就是到最低部触发。
"onReachBottomDistance": 150 // 页面触底距离 单位为px
事件
mpvue
中兼容了小程序的生命周期
,可直接使用。
下拉刷新事件
onPullDownRefresh () {
console.log('下拉刷新')
}
上拉触底事件
onReachBottom () {
console.log('触底了')
}
代码举例
话不多说,直接上代码,相信有点前端基础的都能看得懂。
<script>
export default {
data () {
return {
app_list: {}, // 列表数据
page: 1, // 当前页数
total_page: 0 // 总页数
}
},
// 实例创建完成后调用数据
created () {
this.getList()
},
// 上拉触底事件
onReachBottom () {
if (this.page > this.total_page) {
console.log('数据加载完了')
} else {
// 下一页
this.page = this.page + 1
this.getList()
}
},
// 下拉刷新事件
onPullDownRefresh () {
// 初始化页码
this.page = 1
this.getList()
},
methods: {
// 获取数据方法
getList () {
const that = this
wx.request({
method: 'post',
url: 'https://www.xxx.com/list',
data: {
page: that.page // 传递页码
},
header: {
'content-type': 'application/json'
},
success (res) {
// 关闭下拉刷新动画
wx.stopPullDownRefresh()
// 返回的数据
const data = res.data
// 数据追加 data.list为返回的数据列表
if (that.page > 1) {
// 数据追加
that.app_list.push(...data.list)
// ...data.list
// 等同于
// for (var i = 0; i < data.list.length; i++) {
// this.art_list.push(data['list'][i])
// }
} else {
// 数据
that.app_list = data.list
}
// 总页数
that.total_page = data.total_page
}
})
}
}
}
</script>