6.7【微信小程序全栈开发课程】记录页面(七)--分页加载记录数据

简介: 现在是一次性加载所有的记录数据,数据多的时候,会加载比较慢,所以我们改成分页加载,一次最多加载15条数据每次拉倒底部都会自动加载下一页的数据,知道所有的数据加载完成

1、添加data变量


编辑record.vue文件,添加两个变量page和more


page默认为0,表示当前的页数;more默认为true,用来控制底部显示的信息


data () {
  return {
    show_record:false,
    userinfo:{},
    records:[],
    page: 0,
    more: true
  }
},


2、添加底部页面代码


<!-- 参考代码,无需粘贴
<RecordList :key='index' v-for='(record,index) in records' :record = 'record'></RecordList> -->
<!-- 需要添加的部分 -->
<!-- 如果more为false,底部显示「没有更多数据」 -->
<p class="text-footer" v-if="!more">
  没有更多数据
</p>
<!-- 如果records数据一共不到15条,底部什么也不用显示 -->
<p class="text-footer" v-else-if="records.length < 15">
</p>
<!-- 如果more为true,并且总记录大于15条,底部显示加载中 -->
<p class="text-footer" v-else>
  加载中···
</p>


3、编辑getRecords方法


根据下面的提示编辑方法


async getRecords () {
  //调用后台数据时显示「加载中」提示框
  wx.showToast({
    title: '加载中',
    icon: 'loading'
  })
  //***需要添加的代码***
  if(this.page === 0){
    this.records = []
  }
  //需要传到后台的数据
  const data = {
    openid: this.userinfo.openId,
    //***需要添加的代码***
    page: this.page
  }
  //将后台传过来的数据保存到records变量中
  const records = await get('/weapp/getrecords', data)
  //concat是拼接数组的方法,将新查出的数据,拼接到records数组中
  //***需要编辑的代码***
  // this.records = records.records
  this.records = this.records.concat(records.records)
  //***需要添加的代码***
  //每次在数据库中查找15条数据,如果查出的数据不足15条说明这是最后一页了,将more改为false
  if (records.records.length < 15 && this.page > 0) {
    this.more = false
  }
  //通过records数组的长度来判断show_record变量为false或者true
  if(this.records.length === 0){
    this.show_record = true
  }else{
    this.show_record = false
  }
  console.log("从后台返回的记录数据:",this.records)
  wx.hideToast()
}


4、到达底部加载数据


onReachBottom函数是到达小程序页面底部会触发的函数,我们在这里面调用getRecords方法,每次小程序页面下拉到底部,都会自动触发getRecords方法,调用record数据


//参考代码,无需粘贴
//onShareAppMessage(e) {
  //...
//},
// 需要添加的代码
onReachBottom () {
  // 如果more为false,说明没有更多数据了,不需要再加载getRecords方法,return结束加载
  if (!this.more) {
    return false
  }
  // 加载下一页
  this.page = this.page + 1
  console.log("this.page",this.page)
  this.getRecords()
},


5、修改后台操作文件


也就是server/controllers/getrecords.js文件,接收到当前的页面page数据,加载相应数据


//原代码
const {openid} = ctx.request.query
//修改为
const {openid,page} = ctx.request.query


//原代码
const records = await mysql('records')
                            .select('id','add','mark','note','create_time')
                            .where("openid",openid)
                            .orderBy('id','desc')
//修改为
const records = await mysql('records')
                            .select('id','add','mark','note','create_time')
                            .where("openid",openid)
                            .orderBy('id','desc')
                            .limit(15).offset(Number(page) * 15)


limit n offset m是mysql的分页语句


代码从m行开始查,查找n条数据


6、重置页面


每次切换到记录页面,用户应该最想看到最新数据,所以需要将page变量设为0


(1)给getRecords方法添加一个参数init,并且当init为true时,将page重置为0,more重置为true


//getRecords方法添加一个参数init
async getRecords (init) {
  if(init){
    this.page = 0
    this.more = true
  }
  //参考代码,无需粘贴
  //wx.showToast({
    //title: '加载中',
    //icon: 'loading'
  //})
  //...
//}


(2)编辑onShow中的getRecords方法,添加参数true


//原代码
this.getRecords()
//修改为
this.getRecords(true)


7、下拉重置页面


下拉函数我们之前讲过是onPullDownRefresh,使用这个函数,需要现在main.json文件里面授权


(1)在src/pages/record文件夹下面新建main.json文件,并在文件中添加代码


7、下拉重置页面
下拉函数我们之前讲过是onPullDownRefresh,使用这个函数,需要现在main.json文件里面授权
(1)在src/pages/record文件夹下面新建main.json文件,并在文件中添加代


(2)在record.vue文件中添加onPullDownRefresh函数,并调用getRecords方法


//参考代码,无需粘贴
//onReachBottom () {
  //…
//}
//需要添加的代码
onPullDownRefresh () {
  this.getRecords(true)
  wx.stopPullDownRefresh()
}


8、测试


保存所有修改的文件,打开微信开发者工具测试效果


在首页点击按钮,生成20条左右的记录


切换到记录页面,查看下面几个方面:


(1)上翻小程序到达底部,查看是否会自动加载数据,加载完所有数据,底部会显示没有更多数据


(2)下拉小程序,查看页面是否更新


(3)切换页面,查看页面是否更新


目录
相关文章
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
747 7
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
774 1
|
2月前
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
165 7
|
3月前
|
存储 安全 小程序
在微信小程序中使用 Vant 时如何确保数据的安全?
在微信小程序中使用 Vant 时如何确保数据的安全?
52 1
|
2月前
|
监控 小程序 前端开发
小程序全栈开发中的WebSocket实时通信实践
【10月更文挑战第3天】随着移动互联网的发展,小程序因便捷的用户体验和社交传播能力,成为企业拓展业务的新渠道。本文探讨了小程序全栈开发中的WebSocket实时通信实践,包括其实时通信、长连接及双向通信的特点,并通过实时聊天、推送、游戏和监控等功能的实现,展示了WebSocket在小程序中的应用。开发者需注意安全性、性能及兼容性等问题,以保障小程序的稳定运行和用户体验。
60 7
|
2月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
261 1
|
2月前
|
小程序 前端开发 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【10月更文挑战第3天】随着移动互联网的发展,微信小程序凭借便捷的用户体验和强大的社交传播能力,成为企业拓展业务的新渠道。本文探讨了小程序全栈开发中的身份认证与授权机制,包括手机号码验证、微信登录、第三方登录及角色权限控制等方法,并强调了安全性、用户体验和合规性的重要性,帮助开发者更好地理解和应用这一关键技术。
95 5
|
2月前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【10月更文挑战第3天】微信小程序作为新兴应用形态,凭借便捷体验与社交传播能力,成为企业拓展业务的新渠道。本文探讨了微信小程序全栈开发中的PWA技术应用,包括离线访问、后台运行、桌面图标及原生体验等方面,助力开发者提升小程序性能与用户体验。PWA技术在不同平台的兼容性、性能优化及用户体验是实践中需注意的关键点。
77 5
|
2月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
1155 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
2月前
|
小程序 JavaScript 开发工具

热门文章

最新文章