使用Vant上拉加载实现无限列表

一、Vant上拉加载更多

1、vant的上拉加载更多组件可以快速的创建一个带有加载状态的无限列表。只需要使用一个v-for指令渲染列表。使用步骤如下:

// HTML代码

  
    
  


// script代码
export default {
  data() {
    return {
      list: [],
      page: 1,
      pageSize: 10,
      finished: false
    };
  },
  onLoad() {
    this.page++;
    setTimeout(() => {
      this.getData();
    }, 1000);
  },
  getData() {
    fetch(`/api/data?page=${this.page}&pageSize=${this.pageSize}`).then(res => {
      return res.json();
    }).then(result => {
      this.list.push(...result.data);
      this.finished = (this.list.length >= result.totalCount);
    });
  }
}

2、在代码中,我们使用van-list组件来渲染列表,接着在data选项里添加page、pageSize和finished三个变量;onLoad函数用来加载更多数据,getData函数从后端请求数据,并且在返回结果后将数据添加到list数组中。当list数组长度等于或者大于后端返回结果的totalCount时,则将finished设为true,表示加载完毕。

二、Vant上拉加载下拉刷新怎么用

1、除了上拉加载更多,vant还为我们提供了下拉刷新组件,使用起来也非常简单直观。只需要使用van-pull-refresh组件,代码如下:

// HTML代码

  
    
  


// script代码
export default {
  data() {
    return {
      list: [],
      loading: false
    };
  },
  onRefresh() {
    setTimeout(() => {
      this.getData();
      this.loading = false;
    }, 1000);
  },
  getData() {
    fetch(`/api/data?page=1&pageSize=10`).then(res => {
      return res.json();
    }).then(result => {
      this.list = result.data;
    });
  }
}

2、在代码中,我们使用van-pull-refresh组件包裹van-list组件。当下拉刷新触发时,会调用onRefresh函数,先设置loading为true,然后从后端请求数据,并且在返回结果后将数据设置到list数组中。在代码中,我们使用setTimeout函数模拟后端请求数据的耗时。

三、Vant上拉加载下拉防抖查询

1、在实际使用中,我们可能需要下拉刷新时发起一次数据查询请求,或者在用户输入搜索关键字时发起一次查询请求。为了避免频繁的请求,我们可以使用防抖或者节流函数。

2、比如在下拉刷新时发起数据查询请求时,我们可以使用lodash库提供的防抖函数_.debounce,代码如下:

// HTML代码

  
  
    
  


// script代码
import { debounce } from 'lodash';

export default {
  data() {
    return {
      list: [],
      query: '',
      loading: false,
      search: debounce(this.onSearch, 500)
    };
  },
  onRefresh() {
    setTimeout(() => {
      this.getData();
      this.loading = false;
    }, 1000);
  },
  onSearch() {
    fetch(`/api/data?q=${this.query}&page=1&pageSize=10`).then(res => {
      return res.json();
    }).then(result => {
      this.list = result.data;
    });
  },
  getData() {
    fetch(`/api/data?page=1&pageSize=10`).then(res => {
      return res.json();
    }).then(result => {
      this.list = result.data;
    });
  }
}

3、在代码中我们使用了lodash库的debounce函数,在data选项里结合onSearch函数创建了search变量。当用户在搜索框输入时会调用search变量,从而防抖调用onSearch函数。在onSearch函数中,我们从后端请求数据,并且在返回结果后将数据设置到list数组中。

四、Uniapp上拉加载更多

1、如果你在uniapp中使用vant,则需要注意的是,由于uniapp是跨平台开发框架,不能直接使用浏览器的window对象获取页面高度或者滚动距离。所以需要使用uni-app提供的api来实现上拉加载更多,代码如下:

// HTML代码

  
    
  


// script代码
export default {
  data() {
    return {
      list: [],
      page: 1,
      pageSize: 10,
      finished: false
    };
  },
  onLoad() {
    this.page++;
    uni.request({
      url: `/api/data?page=${this.page}&pageSize=${this.pageSize}`,
      success: (res) => {
        let result = res.data;
        this.list.push(...result.data);
        this.finished = (this.list.length >= result.totalCount);
      }
    });
  }
}

2、在代码中,我们使用uniapp提供的api实现上拉加载更多。在data选项里添加page、pageSize和finished三个变量,在onLoad方法中使用uni.request方法发送请求,从后端获取数据,并且将数据添加到list数组中。当list数组长度等于或者大于后端返回结果的totalCount时,将finished设为true表示加载完毕。

五、VueVant下拉加载

1、如果你使用Vue和Vant来实现下拉加载,那么可以使用better-scroll库提供的下拉刷新和上拉加载更多插件。具体使用方法如下:

// HTML代码

加载中...

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/187050.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-27 13:34
下一篇 2024-11-27 13:34

相关推荐

  • QML 动态加载实践

    探讨 QML 框架下动态加载实现的方法和技巧。 一、实现动态加载的方法 QML 支持从 JavaScript 中动态指定需要加载的 QML 组件,并放置到运行时指定的位置。这种技术…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Python字符转列表指南

    Python是一个极为流行的脚本语言,在数据处理、数据分析、人工智能等领域广泛应用。在很多场景下需要将字符串转换为列表,以便于操作和处理,本篇文章将从多个方面对Python字符转列…

    编程 2025-04-29
  • Python中不同类型的列表

    Python是一种功能强大的编程语言,其内置数据结构之一为列表。列表可以容纳任意数量的元素,并且可以存储不同类型的数据。 一、列表的基本操作 Python的列表类型支持许多操作,如…

    编程 2025-04-29
  • Python为什么输出空列表

    空列表是Python编程中常见的数据类型,在某些情况下,会出现输出空列表的情况。下面我们就从多个方面为大家详细阐述为什么Python会输出空列表。 一、赋值错误 在Python中,…

    编程 2025-04-29
  • Vant ContactList 增加属性的实现方法

    在使用前端UI框架Vant中的ContactList组件时,我们有时需要为此组件增加一些个性化的属性,来满足我们特定的需求。那么,如何实现ContactList组件的增加属性功能呢…

    编程 2025-04-29
  • Python定义两个列表的多面探索

    Python是一种强大的编程语言,开放源代码,易于学习和使用。通过Python语言,我们可以定义各种数据类型,如列表(list)。在Python中,列表(list)在处理数据方面起…

    编程 2025-04-29
  • Python编程实现列表元素逆序存放

    本文将从以下几个方面对Python编程实现列表元素逆序存放做详细阐述: 一、实现思路 一般来说,使用Python将列表元素逆序存放可以通过以下几个步骤实现: 1. 定义一个列表 2…

    编程 2025-04-29
  • Python列表的读写操作

    本文将针对Python列表的读取与写入操作进行详细的阐述,包括列表的基本操作、列表的增删改查、列表切片、列表排序、列表反转、列表拼接、列表复制等操作。 一、列表的基本操作 列表是P…

    编程 2025-04-29
  • Python字典列表去重

    这篇文章将介绍如何使用Python对字典列表进行去重操作,并且从多个方面进行详细的阐述。 一、基本操作 首先我们需要了解Python字典列表去重的基本操作。Python中提供了一种…

    编程 2025-04-28

发表回复

登录后才能评论