微信小程序中实现页面下拉刷新和上拉加载更多的代码示例

什么是微信小程序

微信小程序是一种不需要用户下载安装即可使用的应用程序,可以在微信中轻松运行,不占用手机存储空间,环境封闭且可独立运行。它适合于展示性、轻量级、传播性强的应用场景,如各类小工具、新闻资讯、影音娱乐、在线教育、社交分享等分类。

实现页面下拉刷新

在微信小程序中,实现页面下拉刷新是非常重要的一点,可以提升用户体验和交互性。下面是实现页面下拉刷新的代码示例:

//1. 在wxml页面添加下拉刷新组件

<scroll-view enable-flex='true' scroll-y='true' lower-threshold='50' style='height: 80%;'>

<view wx:for='{{items}}' wx:key='{{index}}'>{{item}}</view>

</scroll-view>

<view class='refresh' style='display:none;'>下拉刷新</view>

<view class='loading' style='display:none;'>加载中...</view>

//2. 在js文件中注册下拉刷新事件

Page({

onPullDownRefresh(){

console.log("下拉刷新")

wx.showNavigationBarLoading();

setTimeout(function(){

wx.stopPullDownRefresh();

wx.hideNavigationBarLoading()

},2000)

}

})

以上代码,首先我们在wxml页面中添加了一个scroll-view组件和下拉刷新的提示。当用户下拉scroll-view组件时,下拉刷新提示就会跟随手指一起向下移动,直到松手时触发onPullDownRefresh函数。

在js文件中我们可以看到,我们注册了一个onPullDownRefresh函数,在这个函数中我们做了两件事:1. console出下拉刷新;2. 写一个setTimeout模拟刷新时间,并用wx.stopPullDownRefresh方法结束刷新并隐藏加载动画。

下面是调试结果:

实现页面上拉加载更多

除了下拉刷新之外,实现页面上拉加载更多也是一个被广泛应用的功能。下面是实现页面上拉加载更多的代码示例:

//1. 在wxml页面添加上拉加载组件

<scroll-view scroll-y='true' style='height:100%' bindscrolltolower='loadMoreData'>

<view wx:for='{{items}}' wx:key='{{index}}' class='cell'>

{{item.text}}

</view>

</scroll-view>

<!-- 上拉加载提示 -->

<view class='loading-more' wx:if='{{loadMoreHidden}}'>没有更多数据了</view>

<view class='loading-more' wx:if='{{!loadMoreHidden}}'>加载中...</view>

//2. 在js文件注册上拉加载事件

Page({

data: {

page: 0,

items: [],

loadMoreHidden: true

},

loadMoreData: function () {

let that = this;

that.setData({

loadMoreHidden: false

});

setTimeout(function () {

that.loadMore()

that.setData({

loadMoreHidden: true

})

}, 2000)

},

loadMore: function () {

console.log('loadMore')

let that = this;

that.setData({

page: that.data.page + 1

})

wx.request({

url: 'https://myserver.com/pagingQuery',

data: {

page: that.data.page,

size: 10

},

method: 'POST',

success: function (res) {

var length = that.data.items.length;

//遍历res.data, this指向了当前for循环的item

res.data.forEach(function (item) {

that.data.items.push({

id: 'item-' + item.id,

text: item.text

})

})

that.setData({

items: that.data.items

})

}

})

}

})

以上代码,首先我们在wxml页面中添加一个scroll-view组件,并在其中添加了一个绑定了“bindscrolltolower”事件的组件。当用户下拉到scroll-view组件的底部时,上拉加载提示就会由“没有更多数据了”变成"加载中"。

在js文件中,我们定义了一个名为“loadMoreData”的函数,并在其中使用了setTimeout模拟了一个请求延迟,并在延迟结束后使用了“loadMore”方法,在该方法中调用了wx.request向后台发起数据请求,并对返回结果进行遍历和处理。

在实际开发过程中,我们还可以做很多其他的优化措施,例如增加分页功能、骨架屏实现等。这里仅仅是基础的实现。

总结

本文介绍了微信小程序中实现页面下拉刷新和上拉加载更多的代码示例。这些功能是微信小程序需要具备的基本功能之一,同时也为小程序提升用户体验和交互性提出了更高的要求。我们在实现的同时,可以进一步优化,达到更好的用户体验。