微信小程序触底加载scroll-view

简介: 微信小程序触底加载scroll-view

微信小程序触底加载 scroll-view

了解什么是触底加载?

需求:有个固定高度的容器,实现容器里面的内容触底加载

1、内容盒子的高度

2、盒子里内容的总高度

3、滚动条的scrollTop

触底加载的原理就是 当里面的容器触底的时候进行分页,请求接口合并数据

公式

盒子的高度+滚动条的scrollTop = 内容高度

使用原生的计算方法比较麻烦 因此市面上有很多关于触底加载的插件

我们这里使用的是 uni-app 里面的 scroll-view

scroll-view 属性

scroll-x:false - 允许横向滚动

scroll-y:false - 允许纵向滚动

show-scrollbar: 距顶部/左边多远时(单位px),触发 scrolltoupper 事件

scroll-top:false - 控制是否出现滚动条

@refresherrefresh: - 自定义下拉刷新被触发

@scroll: - 滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}

@scrolltoupper:滚动到顶部/左边,会触发 scrolltoupper 事件

@scrolltolower:滚动到底部/右边,会触发 scrolltolower 事件

refresher-threshold:45 - 设置自定义下拉刷新阈值

实战上代码

亿点小知识:使用竖向滚动时,需要给 <scroll-view> 一个固定高度,通过 css 设置 height;使用横向滚动时,需要给<scroll-view>添加white-space: nowrap;样式。

页面 根据不同的需求开启不同的属性
<scroll-view
     class="car-list"
     refresher-enabled="true"
    :refresher-triggered="flag"
    @refresherrefresh="refresherrefresh"
    @scrolltolower="scrolltolower"
    scroll-y="true"
    >
    <view class="item-msg" v-for="(item, index) in list" :key="item.id" >
    {{item.name}}
    </view>
</scroll-view>
js 这里的逻辑大家可以根据自己的接口规则进行变动 主要的是看代码的逻辑

如有更好的代码逻辑 可以私信我 一起讨论

data() {
      return {
        list: [],
        flag:false,
        query: {
          per_page: 10,
          page: 1,
        },
        total:0,
      }
    },
methods: {
      refresherrefresh(){ // 下拉刷新
        this.flag = true // 开启下拉刷新
        this.query = {
          per_page: 10,
          page: 1,
        }
        this.list = []
        this.refreshFun()
        setTimeout(() => {
          this.flag = false; // 关闭下拉刷新
        }, 1000);
      },
      // 每次刷新需要用到的方法
      refreshFun(){
        if(this.index == 1 || this.index == 2){ // 判断是否需要传参 启用/禁用
            this.query.enabled = this.index == 1 ? 1 : 0
            this.init()
        }else{
            if(this.query.enabled == 1 || this.query.enabled == 0){
              delete this.query.enabled
            }
            this.init()
        }
      },
      // 触底加载
      scrolltolower () {
          const { list, total,query } = this
          if (list.length === total) return // 判断是否加载全部
          query.page++ // 触底加载 ++
          this.refreshFun()
      },
      async init () { // 数据渲染
        let { query } = this
        uni.showLoading() // 加载中
        let data = await 接口(query)
        uni.hideLoading() // 加载完成
        if ( data.code === SUCCESS ) {
          this.total = data.meta.total // 获取总数
          this.list = this.list.concat(data.data) // 合并数据
        }
      },
}

以上就是微信小程序触底加载感谢大家的阅读

如碰到其他的问题 可以私下我 一起探讨学习

如果对你有所帮助还请 点赞 收藏谢谢~!

关注收藏博客 作者会持续更新…

相关文章
|
6月前
|
小程序 前端开发
解决小程序 scroll-view 里面的image有间距、小程序里面的图片之间有空隙的问题。
解决小程序 scroll-view 里面的image有间距、小程序里面的图片之间有空隙的问题。
|
2月前
|
小程序 容器
微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image
本文介绍了微信小程序中常用组件的使用方法,包括view、scroll-view、swiper与swiper-item、text与rich-text、button以及image组件。详细解释了各组件的功能、属性以及如何在小程序页面中进行使用。
微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image
|
2月前
|
JSON 小程序 JavaScript
微信小程序页面事件,下拉刷新事件和上拉触底事件
这篇文章介绍了微信小程序中如何实现下拉刷新和上拉触底事件,包括开启下拉刷新、配置下拉刷新样式、监听下拉刷新事件,以及监听上拉触底事件和配置上拉触底的距离。
|
4月前
|
小程序 前端开发
【微信小程序-原生开发】实用教程22 - 绘制图表(引入 echarts,含图表的懒加载-获取到数据后再渲染图表,多图表加载等技巧)
【微信小程序-原生开发】实用教程22 - 绘制图表(引入 echarts,含图表的懒加载-获取到数据后再渲染图表,多图表加载等技巧)
246 0
|
4月前
|
JSON 小程序 数据库
【微信小程序-原生开发】实用教程14 - 列表的分页加载,触底加载更多(含无更多数据的提醒和显示,自定义组件)
【微信小程序-原生开发】实用教程14 - 列表的分页加载,触底加载更多(含无更多数据的提醒和显示,自定义组件)
121 0
|
6月前
|
小程序
uniapp-微信小程序-上拉和下拉触底刷新
uniapp-微信小程序-上拉和下拉触底刷新
145 0
|
6月前
|
小程序
微信小程序scroll-view横向滚动和纵向滚动实现(亲测管用)
微信小程序scroll-view横向滚动和纵向滚动实现(亲测管用)
|
6月前
|
小程序
【微信小程序】-- 页面事件 - 上拉触底 - 案例(二十七)
【微信小程序】-- 页面事件 - 上拉触底 - 案例(二十七)
|
6月前
|
JSON 小程序 JavaScript
【微信小程序】-- 页面事件 - 上拉触底(二十六)
【微信小程序】-- 页面事件 - 上拉触底(二十六)
|
6月前
|
小程序
【微信小程序】-- 全局配置 -- window - 下拉刷新 & 上拉触底(十六)
【微信小程序】-- 全局配置 -- window - 下拉刷新 & 上拉触底(十六)

热门文章

最新文章