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

uni-app项目实战笔记20--触底加载更多样式的实现

触底加载更多的实现有多种,这里简单记录下2种:

 1、使用骨架屏,需要到uniapp插件市场下载安装再使用:DCloud 插件市场

2、使用uniapp扩展组件:uni-app官网

uniapp插件市场简介

第1种方式:访问DCloud 插件市场,在搜索栏中输入需要的组件,并可以采取条件过滤筛选符合条件的组件:

 插件市场上有拥有众多丰富精美的组件,可以根据实际需要按需选择,如下图是部分加载中的插件:

使用uni-load-more扩展组件实现

本文重点介绍uniapp扩展组件使用uni-load-more实现加载更多的样式。

在页面顶部和底部添加一个加载更多的组件:

<!--顶部加载更多-->
<view class="loadingLayout" v-if="!classifyList.length && !noData"><uni-load-more status="loading" ></uni-load-more>
/view><!--底部加载更多-->
<view class="loadingLayout" v-if="classifyList.length || noData" ><uni-load-more :status="noData ? 'nomore':'loading'" ></uni-load-more>
</view>
<!--安全区域,防止小程序中“有更多了”跟Home键底部小黑线距离过近-->
<view class="safe-area-inset-bottom"></view>

上面的代码中添加了安全区域的样式:

.safe-area-inset-bottom{height: env(safe-area-inset-bottom);}

从而实现拉大没有更多数据与小程序中小黑线的间距,防止重合在一起:

该章节重点和难点在于条件判断,控制加载更多的样式的显示和隐藏,下面重点记录一下:

<!--顶部加载更多-->
显示条件:!classifyList.length && !noData

!classifyList.length:classifyList 是空数组(还没有数据)

!noData:noData 为 false(表示可能还有数据)

适用场景:

首次加载数据时,列表为空,且服务器可能还有数据(noData=false),此时显示“加载中”状态(status="loading")。

隐藏条件:

如果 classifyList 有数据了(classifyList.length > 0),就不再显示顶部加载。

如果 noData=true(服务器没有更多数据了),即使 classifyList 为空,也不会显示(因为已经没有数据可加载)。

<!--底部加载更多-->
显示条件:classifyList.length || noData

classifyList.length:列表已经有数据(非空)

noData:服务器还有更多数据

隐藏条件:

只有当 classifyList 为空 且 noData=false 时,底部加载才会隐藏(此时顶部加载会显示)。

 

适用场景:

当用户滚动到底部时,检查是否还有更多数据:

如果 noData=false(还有数据),显示 status="loading"(加载中)。

如果 noData=true(没有更多数据),显示 status="nomore"(没有更多数据)。

整体逻辑总结

场景classifyListnoData顶部加载底部加载底部加载状态
初始加载(无数据)[]false✅ loading❌ 隐藏-
加载中(已有数据,继续加载)[data...]false❌ 隐藏✅ loadingloading
加载完成(无更多数据)[data...]true❌ 隐藏✅ nomorenomore
空数据(无更多数据)[]true❌ 隐藏✅ nomorenomore

 

http://www.lqws.cn/news/483805.html

相关文章:

  • PyTorch 入门学习笔记
  • margin-block-start定义元素在块级流方向起始边缘的外边距
  • 3516cv610在vi、vpss模块做延时优化
  • 【设计模式】策略模式 在java中的应用
  • 安卓jetpack compose学习笔记-Navigation基础学习
  • 使用css做出折叠导航栏的功能
  • 【appium】5. Appium WebDriver 支持的常用方法汇总
  • Flink源码阅读环境准备全攻略:搭建高效探索的基石
  • 基于Docker本地化搭建部署Dify
  • CSS Background 相关属性详解 文字镂空效果
  • springboot企业级项目开发之项目测试——集成测试!
  • Idea/Pycharm用法总结
  • 安卓官方版fat-aar:使用Fused Library将多个Android库发布为一个库
  • 机器学习:特征向量与数据维数概念
  • 从代码学习深度强化学习 - Actor-Critic 算法 PyTorch版
  • Ubuntu22.04.4 开启root帐号SSH登陆
  • [Linux] Vim编辑器 Linux输入输出重定向
  • 风险矩阵与灰色综合评价
  • 【Pytest 使用教程】
  • 15.3 LLaMA 3+LangChain实战:智能点餐Agent多轮对话设计落地,订单准确率提升90%!
  • 心法学习 - 苏格拉底式提问法
  • aws(学习笔记第四十六课) codepipeline-build-deploy
  • P99延迟:系统性能优化的关键指标
  • Python嵌套循环
  • Selenium等待机制详解:从原理到实战应用
  • 阿里云CentOS系统搭建全攻略:开启云端技术之旅
  • 群晖 NAS Docker 镜像加速配置详细教程
  • 【数据结构】七种常见排序算法
  • 多项目质量标准如何统一制定与执行
  • Python函数实战:从基础到高级应用