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)切换页面,查看页面是否更新


目录
相关文章
|
JSON 安全 定位技术
微信附近人提取v3脚本, 微信附近人id提取技术插件,采集附近人wxid数据工具
本内容介绍微信“附近的人”功能的技术原理与实现方法,基于LBS服务,涉及位置模拟、协议分析及数据解析。通过修改GPS坐标或使用Frida等工具hook位置函数
|
人工智能 自然语言处理 小程序
技术小白如何利用DeepSeek半小时开发微信小程序?
通过通义灵码的“AI程序员”功能,即使没有编程基础也能轻松创建小程序或网页。借助DeepSeek V3和R1满血版模型,用户只需用自然语言描述需求,就能自动生成代码并优化程序。例如,一个文科生仅通过描述需求就成功开发了一款记录日常活动的微信小程序。此外,通义灵码还提供智能问答模式,帮助用户解决开发中的各种问题,极大简化了开发流程,让普通人的开发体验更加顺畅。
4179 11
技术小白如何利用DeepSeek半小时开发微信小程序?
|
小程序 Java 关系型数据库
weixin163基于微信小程序的校园二手交易平台系统设计与开发ssm(文档+源码)_kaic
本文介绍了一款基于微信小程序的校园二手物品交易平台的开发与实现。该平台采用Java语言开发服务端,使用MySQL数据库进行数据存储,前端以微信小程序为载体,支持管理员和学生两种角色操作。管理员可管理用户、商品分类及信息、交易记录等,而学生则能注册登录、发布购买商品、参与交流论坛等。系统设计注重交互性和安全性,通过SSM框架优化开发流程,确保高效稳定运行,满足用户便捷交易的需求,推动校园资源共享与循环利用。
|
小程序 JavaScript 前端开发
微信小程序开发全流程:从注册到上线的完整指南
这篇文章详细记录了微信小程序的完整开发到最终上线的每一个步骤。适合对小程序开发感兴趣的个人开发者或希望了解完整流程的学习者,涵盖了云开发、事件绑定、生命周期管理、组件使用等关键内容。
25231 14
|
小程序 关系型数据库 Java
weixin168“返家乡”高校暑期社会实践微信小程序设计与开发ssm(文档+源码)_kaic
本文探讨高校暑期社会实践微信小程序的开发与应用,旨在通过信息化手段提升活动管理效率。借助微信小程序技术、SSM框架及MySQL数据库,实现信息共享、流程规范和操作便捷。系统涵盖需求分析、可行性研究、设计实现等环节,确保技术可行、操作简便且经济合理。最终,该小程序可优化活动发布、学生信息管理和心得交流等功能,降低管理成本并提高工作效率。
|
JSON 缓存 小程序
微信小程序组件封装与复用:提升开发效率
本文深入探讨了微信小程序的组件封装与复用,涵盖组件的意义、创建步骤、属性与事件处理,并通过自定义弹窗组件的案例详细说明。组件封装能提高代码复用性、开发效率和可维护性,确保UI一致性。掌握这些技能有助于构建更高质量的小程序。
|
缓存 小程序 API
微信小程序页面导航与路由:实现多页面跳转与数据传递
本文深入探讨微信小程序的页面导航与路由机制,介绍多种页面跳转方式如`wx.navigateTo`、`wx.redirectTo`、`wx.switchTab`等,并讲解通过URL、全局变量和事件传递数据的方法。结合案例实现多页面跳转与数据传递,帮助开发者掌握这一重要技能。
|
缓存 小程序 API
微信小程序网络请求与API调用:实现数据交互
本文深入探讨了微信小程序的网络请求与API调用,涵盖`wx.request`的基本用法、常见场景(如获取数据、提交表单、上传和下载文件)及注意事项(如域名配置、HTTPS协议、超时设置和并发限制)。通过一个简单案例,演示了如何实现小程序与服务器的数据交互。掌握这些技能将帮助你构建功能更丰富的应用。
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
4787 7
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
2688 7