详细复习云开发~小程序【云存储、列表的下拉刷新、列表的分页加载】

news2024/12/28 18:38:20

文章目录

  • 一,云开发~云存储
    • 1-1,云开发控制台管理文件
    • 1-2,上传图片到云存储
    • 1-3,给商品列表加商品图片
    • 1-4,上传视频到云存储
    • 1-5,上传word,excel文件到云存储
      • 1-5-1,上传之前先选择文件
      • 1-5-2,上传文件
    • 1-6,下载文件
    • 1-7,下载并打开word,excel,pdf
  • 二,列表的下拉刷新
    • 2-1,开启页面下拉刷新
    • 2-2,在Page的onPullDownRefresh里监听刷新
    • 2-3,用户下拉刷新时请求最新数据
    • 2-4,数据请求成功后停止刷新
  • 三,列表的分页加载
    • 3-1,小程序数据库每次最多20条
    • 3-2,分页加载的核心方法
    • 3-3,上拉加载更多监听
    • 3-4,数据库分页加载代码实现
      • 3-5-1,没有更多数据时的友好提示
      • 3-5-2,加载中和加载完成的友好提示
    • 3-6,通过云函数实现分页加载


一,云开发~云存储

首先来看下官方对云存储的介绍:

官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/storage.html

说白了,云存储就是可以用来存储视频,音频,图片,文件的一个云存储空间。如果你的小程序需要用到视频播放,音频播放,图片展示,文件上传与下载功能,就可以用到我们的云存储了。

使用云存储来存储文件时,文件名的命名有一些规则,建议看一下。
在这里插入图片描述

1-1,云开发控制台管理文件

控制台也可以很方便的管理文件。
在这里插入图片描述

1-2,上传图片到云存储

  • 我们上传图片之前需要先选择图片,所以这里用到一个图片选择的功能
wx.chooseMedia({
      count: 1,
      mediaType: ['image','video'],
      sourceType: ['album', 'camera'],
      maxDuration: 30,
      camera: 'back',
      success(res) {
        console.log(res);
        console.log(res.tempFiles[0].tempFilePath)
        console.log(res.tempFiles[0].size)
      }
    })

对应的官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseMedia.html

  • 调用api上传到云端
wx.cloud.uploadFile({
  cloudPath: 'example.png',
  filePath: '', // 文件路径
}).then(res => {
  // get resource ID
  console.log(res.fileID)
}).catch(error => {
  // handle error
})

对应的官方文档
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/storage/uploadFile/client.uploadFile.html

1-3,给商品列表加商品图片

我们既然已经学完图片上传功能了,那么我们就可以改造下我们之前的商品列表了,给我们的商品列表添加商品图片。
在这里插入图片描述

1-4,上传视频到云存储

上传视频之前同样需要先选择视频,选择视频的代码同上传图片

对应的官方文档如下:https://developers.weixin.qq.com/miniprogram/dev/api/media/video/wx.chooseMedia.html

选择好视频以后,同样是调用文件上传api,因为视频也是一个文件。

1-5,上传word,excel文件到云存储

1-5-1,上传之前先选择文件

选择文件的时候记得把type设置为file

 wx.chooseMessageFile({
      count: 10,
      type: 'all',
      success: res=>{
        console.log(res);
        // tempFilePath可以作为 img 标签的 src 属性显示图片
        const tempFilePaths = res.tempFiles
        let tempFile = res.tempFiles[0]
        this.uploadFile(tempFile.name,tempFile.path)
      }
    })

对应的官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseMessageFile.html

这里有一点需要注意
在电脑模拟器上是选择电脑上的文件,在手机上运行小程序进行选择文件时是选择你聊天记录里的文件。

1-5-2,上传文件

在上面选择好文件以后,我们还是要调用uploadFile进行文件上传

wx.cloud.uploadFile({
      cloudPath:name,
      filePath:tempUrl
    })
    .then(res=>{
      console.log('文件成功',res);
    })
    .catch(err=>{
      console.log('文件失败',err);
    })

1-6,下载文件

使用wx.cloud.downloadFile下载文件
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/storage/downloadFile/client.downloadFile.html

  • Callback 风格
wx.cloud.downloadFile({
  fileID: 'a7xzcb',
  success: res => {
    // get temp file path
    console.log(res.tempFilePath)
  },
  fail: err => {
    // handle error
  }
})
  • Promise 风格
wx.cloud.downloadFile({
  fileID: 'a7xzcb'
}).then(res => {
  // get temp file path
  console.log(res.tempFilePath)
}).catch(error => {
  // handle error
})

1-7,下载并打开word,excel,pdf

使用wx.openDocument打开文件
https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.openDocument.html

wx.downloadFile({
  // 示例 url,并非真实存在
  url: 'http://example.com/somefile.pdf',
  success: function (res) {
    const filePath = res.tempFilePath
    wx.openDocument({
      filePath: filePath,
      success: function (res) {
        console.log('打开文档成功')
      }
    })
  }
})

二,列表的下拉刷新

2-1,开启页面下拉刷新

我们需要在app.json获取页面对应的json里设置enablePullDownRefresh属性为true来开启下拉刷新。此方法在所有页面都有下拉刷新
在这里插入图片描述
在单个页面
在这里插入图片描述

由于我们的刷新动画默认是白色圆点,所以还要在json里设置页面背景色才可以看到动画。
在这里插入图片描述

2-2,在Page的onPullDownRefresh里监听刷新

在这里插入图片描述

在page里的onPullDownRefresh方法里监听下拉刷新

2-3,用户下拉刷新时请求最新数据

 getList(){
    wx.cloud.database().collection('goods')
    .get()
    .then(res=>{
      console.log('请求成功',res);
      this.setData({
        list:res.data
      })
    })
    .catch(err=>{
      console.log('请求失败',err);
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
   this.getList()
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    console.log('下拉刷新的监听');
    this.getList()
  },

2-4,数据请求成功后停止刷新

我们在下拉刷新时,刷新动画一般很久才结束,正常情况下应该是数据请求成功后就结束刷新动画。所以我们通过wx.stopPullDownRefresh()方法来结束刷新动画。
官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/ui/pull-down-refresh/wx.startPullDownRefresh.html
在这里插入图片描述

代码示例如下

getList(){
    wx.cloud.database().collection('goods')
    .get()
    .then(res=>{
      console.log('请求成功',res);
      wx.stopPullDownRefresh()
      this.setData({
        list:res.data
      })
    })
    .catch(err=>{
      console.log('请求失败',err);
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    wx.startPullDownRefresh()
   this.getList()
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    console.log('下拉刷新的监听');
    this.getList()
  },

三,列表的分页加载

3-1,小程序数据库每次最多20条

小程序数据库api和云函数调用数据的限制

小程序端直接调用云数据库时,每次最多可以获取20条,云函数里调用云数据库时每次最多获取100条。所以我们数据多的时候要做分页加载。

3-2,分页加载的核心方法

我们做分页加载时,主要用到了skip和limit方法,对应的官方文档如下

  • skip:每页加载多少条
    https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/collection/Collection.skip.html
  • limit: 加载第几页的数据https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/collection/Collection.limit.html
    其实这个skip和limit在数据库的那一节有做初步讲解,这一节我们就借助具体分页加载的案例来做综合讲解

3-3,上拉加载更多监听

我们的列表滑动到最后一个数据时,会执行下面的方法
在这里插入图片描述

所以我们的分页加载要在onReachBottom里做。

3-4,数据库分页加载代码实现

直接调用数据库每次最多只能加载20条数据

  data: {
    list:[]
  },
  getList(){
    let len = this.data.list.length
    wx.cloud.database().collection('num2')
    .skip(len)//len=20*page
    .get()
    .then(res=>{
      console.log('请求成功',res);
      this.setData({
        list:this.data.list.concat(res.data)
      })
    })
    .catch(err=>{
      console.log('请求失败',err);
    })
  },
  onLoad(options) {
    this.getList()  
  },
  onReachBottom() {
    console.log('下拉刷新');  
    this.getList()
  },

wxml里只做简单的列表数据显示就行了

wxss做个简单的样式

3-5-1,没有更多数据时的友好提示

在这里插入图片描述

wx.cloud.database().collection('num2')
    .skip(len)//len=20*page
    .get()
    .then(res=>{
      console.log('请求成功',res);
      let dataList = res.data
      if(dataList.length<=0){
        wx.showToast({
          icon:'none',
          title: '没有更多数据了',
        })
      }
      this.setData({
        list:this.data.list.concat(res.data)
      })
    })
    .catch(err=>{
      console.log('请求失败',err);
    })

3-5-2,加载中和加载完成的友好提示

  • 加载中
   wx.showLoading({
      title: '加载中...',
    })
  • 隐藏加载中
wx.hideLoading()
 getList(){
    wx.showLoading({
      title: '加载中...',
    })
    let len = this.data.list.length
    wx.cloud.database().collection('num2')
    .skip(len)//len=20*page
    .get()
    .then(res=>{
      console.log('请求成功',res);
      wx.hideLoading()
      let dataList = res.data
      if(dataList.length<=0){
        wx.showToast({
          icon:'none',
          title: '没有更多数据了',
        })
      }
      this.setData({
        list:this.data.list.concat(res.data)
      })
    })
    .catch(err=>{
      wx.hideLoading()
      console.log('请求失败',err);
    })
  },

3-6,通过云函数实现分页加载

通过云函数调用数据库,每次最多可以加载100条数据.

  • 如果每页20条以内,不建议用云函数
  • 如果分页的时候,每页大于20条,就用云函数。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我国数据库现状与未来发展趋势

作者&#xff1a;IT圈黎俊杰 一、数据库现状 &#xff08;一&#xff09;国际数据库市场现状 在看国内数据库市场现状前&#xff0c;先看一组国际市场数据库的应用情况。 以2021年4月份数据国际市场数据库热度排名为例&#xff0c;稳居前三的Oracle、MySQL 和 Microsoft SQL …

朗坤环境递交注册:拟募资11亿 陈建湘家族色彩浓厚

雷递网 雷建平 12月19日深圳市朗坤环境集团股份有限公司&#xff08;简称&#xff1a;“朗坤环境”&#xff09;日前更新招股书&#xff0c;并提交注册&#xff0c;准备在深交所创业板上市。朗坤环境计划募资11.22亿元&#xff0c;其中&#xff0c;6.57亿元用于中山市南部组团垃…

目标检测论文解读复现【NO.22】多尺度下遥感小目标多头注意力检测

前言 此前出了目标改进算法专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读最新目标检测算法论文&#xff0…

JavaWeb框架(四):JavaWeb项目基于三大组件实现的公司管理系统

MVC实战项目 Web 三大组件实现 公司管理系统需求&#xff1a;项目实战基于会话跟踪技术实现登录功能基于Filter过滤器实现登录验证功能基于Listener监听器监听ServletCntext对象的创建和销毁会话跟踪技术cookiesession对比Filter过滤器入门入门DemoFilter执行流程Filter拦截路径…

基于SSM+Maven+Shiro+Layui+Websocket在线论坛交流聊天bbs系统设计

开发软件&#xff1a;Idea Mysql Redis 开发技术&#xff1a; SSM Maven Shiro Websocket Bootstrap Layui 前台部分 1.用户注册登录模块 用户登录后,可以进行发帖回帖功能,在线签到功能,完善个人信息,添加好友,收藏贴子,评论帖子,点赞功能,记录功能(比如记录今天发生的…

(附源码)ssm巢湖学院校园报修系统 毕业设计 021813

SSM巢湖学院校园报修系统 摘 要 随着互联网大趋势的到来&#xff0c;社会的方方面面&#xff0c;各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去&#xff0c;而其中最好的方式就是建立网络管理系统&#xff0c;并对其进行信息管理。由于现在网络的发达&…

行业认可|墨菲安全登信息通信软件供应链安全社区优秀榜单

11月以来信息通信软件供应链安全社区开展了“软件供应链优秀成果案例”征集评审活动&#xff0c;在 12 月 16 日的结果公示中&#xff0c;墨菲安全软件供应链安全管理平台本次成功入选自主研发创新成果。这是对墨菲安全长期专注在软件供应链安全领域的成果认可&#xff0c;我们…

堆叠自动编码器(Stacked AutoEncoder)

Deeplearning Algorithms tutorial 谷歌的人工智能位于全球前列&#xff0c;在图像识别、语音识别、无人驾驶等技术上都已经落地。而百度实质意义上扛起了国内的人工智能的大旗&#xff0c;覆盖无人驾驶、智能助手、图像识别等许多层面。苹果业已开始全面拥抱机器学习&#xf…

Python解题 - CSDN周赛第16期 - 流水还是积水?

问哥在最后30分钟才有空进入比赛&#xff0c;发现满分选手只有两位&#xff0c;就知道大家又遇到坑了。。。其中两道题的数据都多少有点问题。不得不佩服那两位在这种情况下还能拿满分的选手&#xff0c;等到他们分享解题报告后&#xff0c;问哥再来更新代码吧。 第一题&#x…

java Lambda概念 通过实现线程简单体验一下Lambda表达式

首先 我们先对函数式编程 做一个简单的描述 在数学中 函数是 有输入量和输出量的一套计算方案 也就对应程序中的 拿数据 做操作 java 是一个面向对象编程的语言 他强调的做什么都要通过对象完成 而在函数式中就要尽可能摆脱这种思维模式 函数式只在乎做什么 并不强调用什么形…

程序员能纯靠技术渡过中年危机吗?

首先说答案&#xff0c;能&#xff01;程序员可以靠技术渡过中年危机&#xff0c;但是要转变线性思维。 先说说个人情况&#xff0c;80后&#xff0c;从事电机控制软件开发十余年&#xff0c;属于制造业&#xff0c;算嵌入式的一个小分支&#xff0c;相关的细分行业包括电动汽…

元学习和机器学习的对比

目录引言机器学习元学习什么是元学习元学习的流程学习学习函数评价学习函数好坏迭代优化整体框架元学习和机器学习的对比定义的区别数据集划分的区别损失函数的区别两者之间的共通之处总结引言 本篇博客是李宏毅老师元学习课程的笔记。 深度学习大部分时间在调参数。在业界通…

71. SAP ABAP 报表屏幕输入字段如何实现联动效果

有朋友向我咨询,SAP ABAP 报表输入字段,如何实现联动效果? 所谓联动效果,如下图所示,我们有三个输入框,类型都是 Checkbox: 激活缓存使用共享内存使用二级缓存默认情况下,使用共享内存和使用二级缓存这两个 Checkbox 处于禁用状态。只有当我们选中 激活缓存 时,这两个…

【lssvm回归预测】基于灰狼算法优化最小支持向量机GWO-LSSVM数据预测模型含Matlab源码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

[备战蓝桥杯系列]蓝桥杯总结部分经典题题解分享

文章目录题目1:空间题目2:数字三角形题目3:刷题统计题目4:阶乘约数题目5:回路计数本篇文章中的题解是我所写的代码且都是可以运行通过的, 总结出的一篇相对来说比较清晰的个人题解, 希望要备战蓝桥杯的小伙伴能够看到最后(由于本人要参加的是Java组, 所以后面的题解基本都是使用…

Vant 4 - 新版本发布!有赞出品的 Vue3 移动端 UI 组件库,轻量好用,免费开源

主流的 Vue 移动端组件库 Vant 迎来了第四个大版本的更新&#xff0c;用来开发手机端项目非常好用&#xff0c;强烈推荐给各位开发者使用。 关于 Vant 4 Vant 是一个轻量、可靠的移动端组件库&#xff0c;基于 Vue3&#xff0c;由有赞开发并且维护。有赞作为早期以 H5 商城、…

Mysql Yum安装

步骤一&#xff1a;首先下载mysql的yum源配置 1 | wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 步骤二&#xff1a;安装mysql的yum源 1 | yum -y install mysql57-community-release-el7-11.noarch.rpm 步骤三&#xff1a;yum方式安装mysql …

嵌入式开发环境搭建9步走(ubuntu)

学习嵌入式的同学们注意喽!我想你首先得搭建一个开发环境吧!否则你还能咋玩的起来?所以今天说一下嵌入式开发环境搭建。当然嵌入式系统有很多种&#xff0c;今天在这里以主流的ubuntu为例。 一、选择安装ubuntu8.10版本 【这版本可能有点老&#xff0c;这是曹忠明老师几年前写…

哈希的应用:海量数据处理

文章目录前言什么是海量数据处理位图的应用题目1题目2题目3布隆过滤器的应用问题1问题2哈希切割的应用题目1问题2前言 如果只需要知道某些元素是否存在于集合中&#xff0c;当数据量达到一定程度时&#xff08;以亿级起步&#xff09;&#xff0c;搜索树、哈希表等数据结构会因…

你评论,我赠书~【TFS-CLUB社区 第10期赠书活动】〖uni-app跨平台开发与应用从入门到实践〗等你来拿,参与评论,即可有机获得

文章目录❤️‍&#x1f525; 赠书活动 - 《uni-app跨平台开发与应用从入门到实践》❤️‍&#x1f525; 编辑推荐❤️‍&#x1f525; 抽奖方式与截止时间❤️‍&#x1f525; 赠书活动 → 获奖名单❤️‍&#x1f525; 赠书活动 - 《uni-app跨平台开发与应用从入门到实践》 内…