首页 > 其他分享 >vue 实现下拉滑动触底加载

vue 实现下拉滑动触底加载

时间:2023-03-29 13:58:42浏览次数:32  
标签:vue container pageSize loading 滑动 加载 数据 const

实现下拉滑动触底加载可以分为以下几个步骤:

  1. 监听滚动事件,判断是否到达底部。

  2. 到达底部后,发起数据请求,获取数据。

  3. 将获取到的数据添加到页面上。

下面是一个基于Vue.js的示例代码:

<template>
  <div class="container" ref="container" @scroll="handleScroll">
    <ul>
      <li v-for="(item, index) in list" :key="index">{{ item }}</li>
    </ul>
    <div v-if="loading">加载中...</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: [],
      page: 1,
      pageSize: 10,
      loading: false
    }
  },
  methods: {
    handleScroll() {
      const container = this.$refs.container
      const scrollHeight = container.scrollHeight
      const scrollTop = container.scrollTop
      const clientHeight = container.clientHeight
      if (scrollTop + clientHeight >= scrollHeight && !this.loading) {
        this.loadMore()
      }
    },
    loadMore() {
      this.loading = true
      setTimeout(() => {
        // 模拟获取数据
        const start = (this.page - 1) * this.pageSize
        const end = start + this.pageSize
        const newData = Array.from({ length: this.pageSize }, (v, k) => `item ${start + k}`)
        this.list = [...this.list, ...newData]
        this.page++
        this.loading = false
      }, 1000)
    }
  }
}
</script>

我们监听了容器的滚动事件,并判断是否到达底部。如果到达底部且当前没有正在加载数据,就发起数据请求获取数据,并将获取到的数据添加到列表中。添加数据时,我们使用了ES6的扩展运算符,将新数据和旧数据合并成一个新的数组。同时,为了避免频繁请求数据,我们使用了loading状态来防止重复触发加载更多的操作。

标签:vue,container,pageSize,loading,滑动,加载,数据,const
From: https://www.cnblogs.com/Jansens520/p/17268640.html

相关文章

  • spring-boot-devtools 热部署造成的类加载问题
    如果你的项目在IDE中出现了像下面这些奇怪的错误objectisnotaninstanceofdeclaringclass//对象不是声明类的实例java.lang.ClassCastException:com.exam......
  • vue-router学习笔记
    入门router-link//GotoHomerouter-view//router-view将显示与url对应的组件。动态路由匹配带参数的动态路由匹配($route.params)constUser={template:......
  • vue全家桶进阶之路24:Mock
    Mock是一个JavaScript库,用于生成随机数据或模拟HTTP请求响应,用于前端开发中的单元测试、功能测试、集成测试等场景。Mock可以生成各种类型的数据,包括字符串、数字、......
  • Vue.js 路由的query参数
    视频4.路由的query参数传递参数<!--跳转并携带query参数,to的字符串写法--><router-link:to="/home/message/detail?id=666&title=你好">跳转</router-link> ......
  • Vue2使用setup、ref、reactive等Vue3的组合式api
    有些同学想在当前项目中体验Vue3组合式api,setup、ref、reactive等,而且一步就可以升级到Vue3,但是vue确实2.x版本,不改变当前版本怎么办呢?vue2.7.0开始自带composition-api可......
  • vue动态切换组件
    多个组件挂在到同一个组件上,通过参数进行动态切换一、实现方式<component:is="componentName"></component> 二、示例importPage1from'./Page1'importPage2......
  • nginx配置vue打包npm build的静态页面
    nginx配置vue项目server{listen8081;server_name10.8.8.8;indexindex.html;root/home/www/crm/vue/dist;#SSL-STARTSSL相关配置,请勿删......
  • 思考 React Hook 和 Vue 组合式 API
    Vue组合式API优化周期函数Vue2比如mounted周期中有很多获取数据的逻辑都在这里,在updated周期中又有很多更新的逻辑在这里。在老版本的Vue3文档中讲解组合式AP......
  • 第十篇 vue - 基础 -事件处理
    监听事件我们可以使用v-on指令(简写为@)来监听DOM事件,并在事件触发时执行对应的JavaScript。用法:v-on:click="methodName"或@click="handler"事件处理器的值可......
  • 若依框架-Vue实用框架(权限控制和页面渲染)(四)
    Vue实用框架(权限控制和页面渲染)路由的组成前端token获取那一步中有一块内容,只是简单提了一下,但其实实际涉及到的内容很多: 用户信息的获取第一步的GetInfo后端接口不......