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

简介: 微信小程序触底加载scroll-view版权声明:本文为CSDN博主「下一站丶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq2754289818/article/details/131247627

1687745249920.png

了解什么是触底加载?

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

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) // 合并数据

   }

  },

}`

相关文章
|
7月前
|
小程序 前端开发
解决小程序 scroll-view 里面的image有间距、小程序里面的图片之间有空隙的问题。
解决小程序 scroll-view 里面的image有间距、小程序里面的图片之间有空隙的问题。
|
3月前
|
小程序 容器
微信小程序常用组件的简单使用 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
|
3月前
|
JSON 小程序 JavaScript
微信小程序页面事件,下拉刷新事件和上拉触底事件
这篇文章介绍了微信小程序中如何实现下拉刷新和上拉触底事件,包括开启下拉刷新、配置下拉刷新样式、监听下拉刷新事件,以及监听上拉触底事件和配置上拉触底的距离。
|
5月前
|
小程序 前端开发
【微信小程序-原生开发】实用教程22 - 绘制图表(引入 echarts,含图表的懒加载-获取到数据后再渲染图表,多图表加载等技巧)
【微信小程序-原生开发】实用教程22 - 绘制图表(引入 echarts,含图表的懒加载-获取到数据后再渲染图表,多图表加载等技巧)
281 0
|
5月前
|
JSON 小程序 数据库
【微信小程序-原生开发】实用教程14 - 列表的分页加载,触底加载更多(含无更多数据的提醒和显示,自定义组件)
【微信小程序-原生开发】实用教程14 - 列表的分页加载,触底加载更多(含无更多数据的提醒和显示,自定义组件)
139 0
|
7月前
|
小程序
uniapp-微信小程序-上拉和下拉触底刷新
uniapp-微信小程序-上拉和下拉触底刷新
149 0
|
7月前
|
小程序
微信小程序scroll-view横向滚动和纵向滚动实现(亲测管用)
微信小程序scroll-view横向滚动和纵向滚动实现(亲测管用)
|
7月前
|
小程序
【微信小程序】-- 页面事件 - 上拉触底 - 案例(二十七)
【微信小程序】-- 页面事件 - 上拉触底 - 案例(二十七)
|
7月前
|
JSON 小程序 JavaScript
【微信小程序】-- 页面事件 - 上拉触底(二十六)
【微信小程序】-- 页面事件 - 上拉触底(二十六)
|
7月前
|
小程序
【微信小程序】-- 全局配置 -- window - 下拉刷新 & 上拉触底(十六)
【微信小程序】-- 全局配置 -- window - 下拉刷新 & 上拉触底(十六)