Vue移动端下拉加载更多数据onload实现方法浅析

 更新时间:2023年02月15日 15:04:59   作者:搬砖IT员  
这篇文章主要介绍了Vue移动端下拉加载更多数据onload实现方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

思想:van-list组件负责UI层监测触底, 执行onload函数, page++, 请求下页数据, 和现在数据合并显示更多, 设置loading为false, 确保下次触底还能执行onLoad

vant是一个可用于移动端的组件库,搭建页面框架,需要使用到vant组件,添加依赖yarn add vant@2.12.15至vue2项目内,此处用到van-list组件。

vant中的组件van-list来动态渲染数据,下拉加载首先需要绑定变量loading(加载状态)、属性finished(是否全部加载完成),finished-text全部加载完成显示的文字

 <van-list
     v-model="loading"
     :finished="finished"
     finished-text="没有更多了"
     @load="onLoad"
  >
       正常的遍历searchResult内数据 渲染至页面内容
 </van-list>      

数据:注意要有当前页页码page配合实现

data() {
    return {
      searchResult: [],  //搜索到的总的数据,用此数组内数据来遍历展示
      loading: false,  //加载中 (状态) - 只有为false, 才能触底后自动触发onload方法
      finished: false,   // 未加载全部 (如果设置为true, 底部就不会再次执行onload, 代表全部加载完成)
      page: 1,  // 当前搜索结果的页码
    };
  },  

以上为准备的数据,

onload 下拉刷新加载更多数据 (触底后加载下一页数据)

思想:

1、监测页面触底执行onload事件 (onload事件:页面内所有元素包括图片等都加载完成后执行)

2、配合后台接口,传递下一页的标识

3、拿到下一页数据后追加到当前数组末尾即可

<script>
export default {
  methods: {
    // 此为js代码,监听事件,发送异步操作的数据请求
    async btn2() {
      this.loading = false // 优化bug,防止出现首次多加载一次的情况
      this.finished = false // 加载未结束
      this.page = 1 // 走完函数,就将当前页恢复至1,防止后面累加,导致点击别的筛选条件时无效
      // 异步发送请求获取数据赋值给data内变量
      const { data } = await getSearchResult({
        keywords: this.value, // 此为接口需要的参数
        limit: 20
      })
      this.searchResult = data.result.songs
    },
    async onLoad() { // 触底事件(要加载下一页的数据), 内部会自动把loading改为true,为true后才会执行x
      this.page++ // 加载至底部就将页面值+1
      const { data } = await getSearchResult({
        keywords: this.value,
        limit: 20,
        offset: (this.page - 1) * 20 // 传参固定公式,页面偏移量即一页多少数据
      })
      if (data.result.songs === undefined) { // 下拉刷新后此次检索不到数据了,表示已经将所有数据加载完了
        return (this.finished = true) // finished赋值为true,表示 不再去进行加载了,结束状态
      }
      this.searchResult.push(...data.result.songs) // 将每次下拉刷新检索到的数据加入 展示的数据列表
      this.loading = false // 切记,本次加载完更多数据后,一定要把loading改成false, 保证下一次还能触发onload方法
    }
  }
}
</script>
 

第一次发送getSearchResult数据请求为加载第一页数据,限制获取数据数量limit为20条,第二次getSearchResult则是下拉到底,再去获取20条数据,再添加到第一次保存数据的数组里,这样就有40条数据同时渲染在了页面上,以后每下拉一次,就是此种操作,从请求里获取不到数据了,将finished赋值为true下拉加载事件就会停止

到此这篇关于Vue移动端下拉加载更多数据onload实现方法浅析的文章就介绍到这了,更多相关Vue下拉加载 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue前端整合Element Ui的教程详解

    Vue前端整合Element Ui的教程详解

    这篇文章主要介绍了Vue前端整合Element Ui,本节内容服务于SpringBoot + Vue 搭建 JavaWeb 增删改查项目,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • vue用addRoutes实现动态路由的示例

    vue用addRoutes实现动态路由的示例

    本篇文章主要介绍了vue用addRoutes实现动态路由的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • vue中监听input框获取焦点及失去焦点的问题

    vue中监听input框获取焦点及失去焦点的问题

    这篇文章主要介绍了vue中监听input框获取焦点,失去焦点的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 解决vue3项目打包发布到服务器后访问页面显示空白问题

    解决vue3项目打包发布到服务器后访问页面显示空白问题

    这篇文章主要介绍了解决vue3项目打包发布到服务器后访问页面显示空白问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Vue自定义指令实现弹窗拖拽四边拉伸及对角线拉伸效果

    Vue自定义指令实现弹窗拖拽四边拉伸及对角线拉伸效果

    小编最近在做一个vue前端项目,需要实现弹窗的拖拽,四边拉伸及对角线拉伸,以及弹窗边界处理功能,本文通过实例代码给大家分享我的实现过程及遇到问题解决方法,感兴趣的朋友一起看看吧
    2021-08-08
  • ElementUI如何修改Dialog的标题样式

    ElementUI如何修改Dialog的标题样式

    这篇文章主要介绍了ElementUI如何修改Dialog的标题样式问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue+uniapp实现生成二维码

    vue+uniapp实现生成二维码

    这篇文章主要为大家详细介绍了vue结合uniapp实现生成二维码的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以学习一下
    2023-12-12
  • vue+elementUI组件tree如何实现单选加条件禁用

    vue+elementUI组件tree如何实现单选加条件禁用

    这篇文章主要介绍了vue+elementUI组件tree如何实现单选加条件禁用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Vue3图片上传报错:Required part ‘file‘ is not present.的原因及解决方法

    Vue3图片上传报错:Required part ‘file‘ is not present.的原因及解决方法

    这篇文章主要介绍了Vue3图片上传报错:Required part ‘file‘ is not present.的原因及解决方法,文中通过代码示例讲解的非常详细,对大家解决问题有一定的帮助,需要的朋友可以参考下
    2024-09-09
  • vue中el-tree 横向滚动条的实现

    vue中el-tree 横向滚动条的实现

    本文详细介绍了在Vue框架中使用el-tree组件创建横向滚动条的方法,通过代码示例和步骤说明,帮助开发者理解和实现横向滚动功能,感兴趣的可以了解一下
    2024-09-09

最新评论