微信小程序 下拉刷新、上拉加载demo
2023-09-11 14:20:19 时间
原生微信小程序 下拉刷新、上拉加载demo代码
一、item-list.wxml
<!--pages/item-list/item-list.wxml-->
<view class="itemList">
<view class="item" wx:for="{{itemList}}" wx:key="{{item.id}}">
<view class="name">{{item.id}}{{item.name}}</view>
<view class="time">{{item.time}}</view>
</view>
<view class="tips">
<view wx:if="{{hasMore}}">
<view class="tips-text">加载更多</view>
</view>
<view wx:else>
<view class="tips-text" wx:if="{{currentPage == 1 && itemList.length ==0}}">暂无信息</view>
<view class="tips-text" wx:else>已经是最后一条啦</view>
</view>
</view>
</view>
二、item-list.js代码
// pages/item-list/item-list.js
var app = getApp()
var api = require('../../utils/httputil.js') //相对路径
Page({
/**
* 页面的初始数据
*/
data: {
itemList:[],
currentPage:1,//当前页
pageSize:10,//一页显示个数
hasMore:false,
downFlag:false,//下拉标识
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.getItemListByPage(this.data.currentPage,this.data.pageSize)
},
/**
* 页面相关事件处理函数--监听用户下拉动作
* 下拉刷新
*/
onPullDownRefresh: function () {
this.data.downFlag = true
//在标题栏中显示加载
wx.showNavigationBarLoading()
this.data.currentPage = 1
this.getItemListByPage(this.data.currentPage,this.data.pageSize)
},
/**
* 页面上拉触底事件的处理函数
* 拉加载
*/
onReachBottom: function () {
if(this.data.hasMore){
this.getItemListByPage(this.data.currentPage,this.data.pageSize)
}
},
//分页获取列表数据
getItemListByPage(currentPage,pageSize){
//请求服务器后台API
api.getItemListByPage(currentPage,pageSize).then(res => {
if(res.returnCode == 200){
if(currentPage == 1){
this.data.itemList=[]
}
if(res.data.rows.length>0){
if(parseInt(currentPage)<parseInt(res.data.pages)){
this.data.hasMore =true //赋值未渲染 this.data.params=xx
this.data.currentPage = parseInt(currentPage) +1
}else{
this.data.hasMore =false
}
//遍历
for(var i=0;i<res.data.rows.length;i++){
let obj = res.data.rows[i]
let name = '第'+currentPage+'页'+i
obj.name = name;
this.data.itemList.push(obj)
}
}
//渲染 this.setData
this.setData({
hasMore:this.data.hasMore,
currentPage:this.data.currentPage,
itemList:this.data.itemList
})
if(this.data.downFlag){
this.data.downFlag = false
//处理完成后,终止下拉刷新
wx.stopPullDownRefresh()
//完成 停止加载
wx.hideNavigationBarLoading()
}
}
})
}
})
三、item-list.wxss
/* pages/item-list/item-list.wxss */
.itemList{
width:100%;
background: #f7f7f7;
}
.item{
width:100%;
background-color: #ffffff;
margin-top: 20rpx;
height: 120rpx;
padding-left:20rpx;
}
.name{
display: flex;
flex-direction: row;
font-size: 28rpx;
font-weight: 400;
color:#000000;
padding-top:10rpx;
}
/*时间*/
.time{
font-size: 28rpx;
font-weight: 400;
color:#555555;
margin-top: 20rpx;
}
.tips{
width:100%;
margin-top: 60rpx;
}
.tips-text{
font-size: 28rpx;
text-align: center;
color:#cacaca;
}
四、item-list.json
{
"navigationBarTitleText":"分页 下拉刷新 上拉加载",
"enablePullDownRefresh":true,
"backgroundTextStyle":"dark",
"usingComponents": {}
}
api.getItemListByPage方法请求 我自己本地服务器后台API方法,返回分页结果数据。想要看效果的话,可替换成自己的方法,进行校验。
相关文章
- 为微信开发填坑:微信网页支付的开发流程及填坑技巧
- vue和微信小程序的区别、比较
- 微信小程序_(表单组件)checkbox与label
- 微信小程序_(组件)swiper轮播图
- 微信小程序_(组件)scroll-view可滚动视图
- 微信小程序——扫码后提示“打开失败缺少ID”
- uni-app:微信小程序:预加载字体文件(hbuilderx 3.7.3)
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法.
- 微信小程序会让前端开发者失业
- 微信分享封装类
- signalr 应用于微信小程序(二)
- 微信小程序为什么引入 rpx
- 微信小程序:在开发测试时使用非业务域名(微信: 8.0.32)
- 微信小程序----解析px、rpx、rem、vw实现页面布局
- 微信小程序----button组件
- 微信小程序自定义picker多列选择器
- SAP BSP, Java Web Project,Android和微信小程序的初始页面设置
- 微信小程序开发系列四:微信小程序之控制器的初始化逻辑
- 如何打通 SAP Cloud for Customer 系统和微信公众号的双向消息通信功能
- uniapp微信小程序拿来即用的瀑布流布局demo2(方法二)(复制粘贴即可使用,无需做其他处理)
- uniapp微信小程序开发者工具-真机调试报错:message:Error: /XXX.bak.js does not exists
- uniapp 微信小程序分页方法:uni-pagination分页插件和上拉分页、下拉加载刷新、刷新后回到顶部
- 微信小程序报错errMsg: “request:fail url not in domain list“
- 微信小程序开发学习笔记(一)——概要、安装开发环境与第一个小程序
- 微信小程序练手实战:前端+后端(Java)
- uniapp微信小程序onShareAppMessage 函数实现分享功能和实例页面代码