使用scroll-view实现一个滑动列表

简介: 使用scroll-view实现一个滑动列表

1.webp (1).jpg

滑动列表是每个应用必不可少的部分,而实现也是一件复杂的事情,根据上面的动图实现一个滑动列表,需要考虑到如下几点。

  • 列表的滑动区域
  • 列表的下拉刷新
  • 列表的触底加载

下面我将从这三点来带大家具体如何实现一个完整的滑动列表

滑动区域

使用scroll-view来固定可视区域,但是有一个关键性问题就是需要明确可视区域的高度,为了使页面固定,用户在可视区域滑动,不会产生溢出而导致页面不固定的问题,就需要根据页面的元素计算可视觉区域的高度。

.home-page-info {
    height: calc(100vh - 508rpx);
    overflow:scroll
}
复制代码

上面是针对我的场景计算的高度,具体计算掘友们可以根据实际元素高度,运用CSS变量运算,将100vh减去其他元素的高度,而需要注意的是这种情况是你不适应自定义tabbar如果使用自定义tabbar则需要去考虑到不同机型的问题。

下拉刷新

scroll-view的下拉刷新与页面的下拉刷新不同,需要在属性上开启刷新

<scroll-view class="home-page-info" scroll-y="true" refresher-enabled="true" refresher-triggered="{{isPull}}" bindrefresherrefresh="onPull"></scroll-view>
复制代码

refresher-enabled可以开启自定义下拉刷新,refresher-triggered控制刷新状态,bindrefresherrefresh是触发刷新的函数

一般来讲是在开启自定义刷新后,通过刷新函数异步控制数据请求与刷新状态

onPull() {
        let count = this.data.count
        this.loadPresences(1,count)
},
复制代码

上面是触发的请求函数,我将下面的代码放在了请求回调中,控制刷新状态。

this.setData({
                isPull: false
            })
复制代码

这样完成了下拉刷新的功能,总结来看就是搭配refresher的几个属性来控制刷新的整个过程:开始刷新,刷新中请求数据,结束刷新

触底加载

scroll-view的触底加载和页面的触底加载也不同,是靠属性实现

<scroll-view class="home-page-info" scroll-y="true" refresher-enabled="true" refresher-triggered="{{isPull}}" bindrefresherrefresh="onPull" bindscrolltolower="onDown"></scroll-view>
复制代码

bindscrolltolower是触底加载触发的函数,在内进行数据的请求,一般触底加载可以加动画来使交互更加舒服,而还需要注意的是触底加载需要考虑到重复请求的问题,当网络有延迟,你多次触底会触发多次请求,而触底加载一般是依靠分页和合并数组来实现数据的延续,重复请求相同数据会造成问题,所以一般可以加拦截器来校验重复请求



相关文章
|
4月前
|
消息中间件 监控 安全
Kafka为何这么快?企业级Kafka该怎么部署?
Kafka凭借其高吞吐、低延迟和横向扩展能力,成为现代实时数据处理的核心组件。其“快”源于顺序写盘、零拷贝、批量处理和无锁设计等架构优化。本文深入解析Kafka的高效机制,并探讨企业在实际应用中的架构设计、安全管理与平台化治理策略,助力构建稳定高效的数据流平台。
|
存储 Prometheus Cloud Native
Grafana 系列文章(十):为什么应该使用 Loki
Grafana 系列文章(十):为什么应该使用 Loki
|
移动开发 小程序
uniapp自定义tabbar,中间凸起(支持H5、微信小程序)
uniapp自定义tabbar,中间凸起(支持H5、微信小程序)
uniapp自定义tabbar,中间凸起(支持H5、微信小程序)
uniapp遮罩层穿透问题,uview遮罩层组件,uview的actionSheet组件.鼠标穿透,uview组件u-popup遮罩滚动穿透问题
uniapp遮罩层穿透问题,uview遮罩层组件,uview的actionSheet组件.鼠标穿透,uview组件u-popup遮罩滚动穿透问题
1164 0
|
C# 图形学
【unity小技巧】Unity音乐和音效管理器
【unity小技巧】Unity音乐和音效管理器
1058 1
|
12月前
|
数据采集
使用 Puppeteer 绕过 Captcha:实现商家数据自动化采集
本文介绍了如何使用Puppeteer结合代理IP和用户伪装技术,轻松绕过大众点评的Captcha验证,实现商家信息的高效采集。通过配置Puppeteer、设置代理和用户伪装参数、模拟人类操作等步骤,成功提取了目标页面的数据。该方法不仅提高了爬虫的稳定性和隐蔽性,还为市场研究和商业分析提供了有力支持。注意,数据采集需遵守法律法规及网站政策。
355 1
使用 Puppeteer 绕过 Captcha:实现商家数据自动化采集
|
Unix Linux
linux中在进程之间传递文件描述符的实现方式
linux中在进程之间传递文件描述符的实现方式
|
自然语言处理 搜索推荐
通义大模型使用指南之通义万相
该文介绍了如何在阿里云的通义大模型平台注册账号,并详细展示了通义万相功能的使用,包括文本生成图像、相似图像生成、图像风格迁移和应用广场(虚拟模特)四个部分。用户可以通过输入文字或选择图片,生成不同风格的创意作品,并能进行点赞、不满意、生成相似图、下载原图和收藏等操作。在应用广场中,用户可以上传图片并替换模特及背景,创建个性化商品展示图。
5401 0
|
存储 NoSQL 关系型数据库
探索数据库技术的演变与前沿应用
一、引言 随着信息技术的迅猛发展,数据库技术作为信息存储、处理和管理的核心,不断推动着社会进步和数字化转型
|
前端开发
前端 CSS 经典:弧形边框选项卡
前端 CSS 经典:弧形边框选项卡
761 0