当前位置: 首页 > news >正文

uniapp项目实践总结(十七)实现滚动触底加载

导语:在日测的开发过程中,经常会碰到页面需要渲染大量数据的情况,这时候就需要用到滚动加载功能,下面总结一下方法。

目录

  • 原理分析
  • 实战演练
  • 案例展示

原理分析

使用@scrolltolower事件来监听滚动到底部,然后加载下一页的数据。

实战演练

模板页面

<scroll-view:scroll-y="true"class="block-main block-two-level block-pad"@scrolltolower="scrollBottom"><view class="scroll-ls" v-for="(item, index) in scrollInfo.list" :key="index"> {{ item }} </view><uni-load-more v-if="scrollInfo.list.length" :status="scrollInfo.loading"></uni-load-more>
</scroll-view>

样式编写

.scroll-ls {margin-top: 20rpx;padding: 50rpx 0;text-align: center;background: $f8;
}

脚本使用

  • 定义数据
// 滚动列表
const scrollInfo = reactive({originList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,27, 28,],list: [],pageInfo: {page: 1,size: 8,pages: 0,},loading: "more",
});
  • 方法调用
// 滚动到底部
function scrollBottom() {console.log("滚动到底部!");if (scrollInfo.pageInfo.page < scrollInfo.pageInfo.pages) {scrollInfo.pageInfo.page++;scrollInfo.loading = "loading";getList();} else {scrollInfo.loading = "noMore";}
}
  • 获取列表
// 获取列表
function getList() {if (scrollInfo.pageInfo.page <= 1) {show.value = true;}let data = proxy.$apis.utils.splitData(scrollInfo.originList, 8);scrollInfo.pageInfo.pages = data.pages;setTimeout(() => {if (scrollInfo.pageInfo.page <= 1) {scrollInfo.list = data.list[scrollInfo.pageInfo.page - 1];setTimeout(() => {show.value = false;}, 500);} else {scrollInfo.list = [...scrollInfo.list, ...data.list[scrollInfo.pageInfo.page - 1]];}scrollInfo.loading = scrollInfo.pageInfo.page < scrollInfo.pageInfo.pages ? "more" : "noMore";}, 1000);
}

案例展示

  • h5 端效果
    在这里插入图片描述

  • 小程序端效果
    在这里插入图片描述

  • APP 端效果
    在这里插入图片描述

最后

以上就是实现滚动触底加载的主要内容,有不足之处,请多多指正。

http://www.lryc.cn/news/169719.html

相关文章:

  • SAP入门到放弃系列之QM质量检验流程概述
  • Ansys Zemax | 光学系统设计中如何使用玻璃替换方法来优化玻璃
  • springboot基础--实现默认登录页面
  • TDesign WXS语法
  • Iterator设计模式
  • ROS 入门
  • 第四章 Linux网络编程
  • 无涯教程-JavaScript - OFFSET函数
  • rust切片
  • 2023/9/18 -- C++/QT
  • vue柱状图+折线图组合
  • js中如何实现一个简单的防抖函数?
  • mysq 主从同步错误之 Error_code 1032 handler error HA_ERR_KEY_NOT_FOUND
  • 蓝桥杯 题库 简单 每日十题 day4
  • l8-d21 域名解析与http服务器实现原理
  • 网络安全(黑客技术)自学规划
  • 阻止用邮件不停注册wordpress账户的方法
  • 低代码工具大比拼:哪个最适合你?
  • 用Python实现链式调用
  • 基于SSM的汽车租赁后台管理系统
  • Word 文档转换 PDF、图片
  • 解决Permission is not allowed后基于Ubuntu23.04安装配置docker与docker-compose
  • [ABC118D] Match Matching
  • 程序员必须掌握哪些算法?
  • Java高级之File类、节点流、缓冲流、转换流、标准I/O流、打印流、数据流
  • 解决WSL2占用内存过多问题(Docker on WSL2: VmmemWSL)
  • 华为云云耀云服务器L实例评测|了解配置和管理L型云服务器
  • 【面试题】——Java基础篇(33题)
  • 记一次 .NET 某电力系统 内存暴涨分析
  • 1.SpringEL初始