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



相关文章
u-view使用轮播组件u-swiper不能正常显示
Swiper 轮播图 | uView 2.0 - 全面兼容nvue的uni-app生态框架 - uni-app UI框架
1099 0
u-view使用轮播组件u-swiper不能正常显示
|
8月前
|
前端开发
微信拖拽盒子movable-view点击事件失效问题
微信拖拽盒子movable-view点击事件失效问题
|
8月前
element-plus:el-Dialog对话框组件垂直居中、禁止屏幕滚动、使用内滚动
element-plus:el-Dialog对话框组件垂直居中、禁止屏幕滚动、使用内滚动
|
前端开发 JavaScript 小程序
uniapp中scroll-view局部滚动的各种场景
可滚动视图区域,用于区域滚动。使用竖向滚动时,需要给 scroll-view 一个固定高度,通过 css 设置 height;使用横向滚动时,需要给 scroll-view 添加 white-space: nowrap; 样式
556 0
|
小程序
微信小程序scroll-view组件设置 scroll-top无效问题解决
微信小程序scroll-view组件设置 scroll-top无效问题解决
1085 0
|
小程序 前端开发 定位技术
【小程序】view视图,swiper轮播图,scroll-view滑动列表 (在线详细手册)
【小程序】view视图,swiper轮播图,scroll-view滑动列表 (在线详细手册)
RecyclerView的item宽度不能全屏显示
RecyclerView的item宽度不能全屏显示
232 0
|
前端开发
scroll-view实现不了滑动效果
scroll-view实现不了滑动效果
276 0
|
前端开发 JavaScript
uniapp使用scroll-view与swiper组件实现tab滑动切换页面需要注意的问题
ab栏可以滑动,切换页面跟随tab栏同步滑动。这里需要注意的是使用swiper组件时,它会有一个默认的高度,你必须动态的获取数据列表的高度覆盖原来的默认高度。