小程序进阶学习(视频首页-上拉刷新,下拉加载)

 首先改造之前的发送请求的代码

下拉加载:需要把之前的数据和请求回来的数据重新结合成一个新的的数据,然后再把这新的数据赋值给videoLists中,然后重新渲染页面。触发下拉加载后需要给offset这个属性加上10,下次请、求的数据就是新的数据。

这里请求的回来的参数中有一个hasMore这个属性,如果是false就说明没有更多数据了,然后就弹窗提醒灭有更多数据了,如果有则继续发送请求。

上拉刷新:原理:上拉的时候那之前的数据重置和清空

页面代码

<!--pages/main-video/main-video.wxml-->
<scroll-view style="height: {{windowHeight}}px" scroll-y="true">


<view>
  <view class="videoList"> 
    <block wx:for="{{videoLists}}" wx:key="{{item.srtisId}}">
    <video-item class="item" itemData="{{item}}" />      
    </block>
  </view>
</view>
</scroll-view>
// pages/main-video/main-video.js
import { getTopMv } from "../../services/request/myvideorequest"
const systemInfo = wx.getSystemInfoSync();
const windowHeight = systemInfo.windowHeight;

Page({

  /**
   * 页面的初始数据
   */
  data: {
    videoLists:[],
    offset:0,
    hasMore:true
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getvideo()
  },
  async getvideo(){
    const videolist = await getTopMv(this.data.offset)
    const newVideoList = [...this.data.videoLists,...videolist.data]
    this.setData({videoLists: newVideoList})
    this.data.offset+=10
    this.data.hasMore = videolist.hasMore
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    console.log("下拉刷新")
    this.data.offset=0
    this.data.hasMore=true
    this.setData({videoLists:[]})
    this.getvideo().then(
      wx.stopPullDownRefresh()
    )

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    
    if(!this.data.hasMore) {
      wx.showToast({
        title:"没有更多数据了",
      })
      return
    }

    this.getvideo(this.data.offset)

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})
/* pages/main-video/main-video.wxss */
.videoList{
  display: flex;
  flex-wrap: wrap;
  justify-content: space-around;
  padding:0 10rpx;


}
.item{
  width: 48%;
}
{
  "usingComponents": {
    "video-item":"/components/video-items/video-item"

  },
  "enablePullDownRefresh": true
}

http://www.niftyadmin.cn/n/5334089.html

相关文章

使用vue2写一个太极图,并且点击旋转

下面是我自己写的一个代码&#xff0c;命名有些不规范&#xff0c;大家不要介意。 <template><div class"qq"><div class"app" :style"{ transform: rotateStyle }"><div class"app1"><div class"ap…

回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测

回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测 目录 回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测&…

redis批处理优化

1.为什么需要批处理 一个命令在网络传输的时间往往是远大于在redis中执行命令的时间的&#xff0c;如果每条命令都要逐条经历网络传输&#xff0c;耗时将会大大增加&#xff0c;我们不妨将命令多量少次的传输给redis&#xff0c;这样就大大减少了因为网络传输时间&#xff0c;…

Java如何做到无感知刷新token含示例代码(值得珍藏)

1. 前言 在系统页面进行业务操作时&#xff0c;有时会突然遇到应用闪退&#xff0c;并被重定向至登录页面&#xff0c;要求重新登录。此问题的出现&#xff0c;通常与系统中用于存储用户ID和token信息的Redis缓存有关。具体来说&#xff0c;这可能是由于token过期所导致的身份…

C#设计模式教程(1):简单工厂模式

在C#中,工厂模式可以分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 简单工厂模式(Simple Factory Pattern): 简单工厂模式并不属于23种经典设计模式之一,但它是工厂模式的一种简单形式。在简单工厂模式中,有一个工厂类负责根据传入的参数决定创建哪种产…

软件测试|如何使用selenium处理iframe富文本输入框

简介 在网页开发中&#xff0c;富文本框是常见的元素&#xff0c;用于输入富文本内容&#xff0c;如富文本编辑器或邮件编辑器。如果我们要使用Python和Selenium进行自动化测试或操作这种富文本框&#xff0c;可能会遇到一些挑战。本文将详细介绍如何使用Python和Selenium来向…

基于YOLOv8深度学习的葡萄簇目标检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

分享一个基于easyui前端框架开发的后台管理系统模板

这是博主自己在使用的一套easyui前端框架的后台管理系统模版&#xff0c;包含了后端的Java代码&#xff0c;已经实现了菜单控制、权限控制功能&#xff0c;可以直接拿来使用。 springboot mybatis mybatis-plus实现的增删查改完整项目&#xff0c;前端使用了easyui前端框架。…