首页 > 其他分享 >vue项目结合vant,实现上拉加载更多,下拉刷新

vue项目结合vant,实现上拉加载更多,下拉刷新

时间:2023-05-22 10:22:38浏览次数:39  
标签:vue false vant data finished 上拉 数据 加载

上拉加载思路:

  1. 引入vant 组件 上拉list
  2. 后端数据做了分页处理,获取接口数据,渲染到页面上,(此处只会显示一页的数据)
  3. 设置属性去实现效果,loading,finished为vant组件中提供的
  4. 每次滚动到底部后把页面数+1,发送一次请求获取新分页数据.
  5. 获取完数据,将新获取的数据跟上一页获取的数据做一个合并
  6. 判断加载完毕,数据的长度小于1,则finished设置为true,表示所有数据加载完毕**
    代码:
      <!-- 上拉加载 -->
      <van-list
        v-model="loading"
        :finished="finished"
        finished-text="没有更多了"
        @load="onLoad"
      >
        <!-- 下拉刷新 -->
        <van-pull-refresh
          v-model="isLoading"
          success-text="刷新成功"
          @refresh="onRefresh"
        >
          <!-- 内容 -->
          <ul >
            <li v-for="item in prolist" 
            :key="item.proId" 
            class="commin-box" 
            @click="godetail(item.proId)">
              <img :src="item.img" />
              <p class="proName">{{ item.proName }}</p>
              <p class="price">¥ {{ item.price }}</p>
            </li>
          </ul>
        </van-pull-refresh>
      </van-list>

上拉加载:
初始设置loading 为true,数据加载成功,设置为false。所有数据加载完设置 finished为false(loading,finished为vant组件中提供的)判断数据加载完毕:数据的长度小于1 则判断数据加载完毕,

  onl oad() {
      // 开始异步请求数据
      this.loading = true;
      // 本次数据更新成功后,将loading设置为false
      getpro({
        num: this.num,  //num,一页获取多少个
        index: this.index++,   //index初始为0,页码
      }).then((data) => {
        this.loading = false;
        this.prolist = [...this.prolist, ...data.data.msg]; // 上一页数据跟新加载的数据做合并
        // 判断数据是否加载完毕
        if (data.data.msg.length < 1) {
          // 将finished设置为true,表示所有数据加载完毕
          this.finished = true;
        }
      });
    },

下拉刷新思路

  1. 引入vant 组件 下拉 PullRefresh
  2. 设置相对应属性,(vant中有提示)
  3. 相当于重新加载一遍数据
  4. 请求成功后覆盖重新渲染的数据,isLoading设置为false表示加载完毕,将页码初始化,设置为05.bug:原先老数据未被清除,新数据直接覆盖,内容中key值相同,组件被复用了,** 解决:刷新这个路由 this.$router.go(0)

代码:

   // 下拉刷新
    onRefresh() {
      getpro({
        num: this.num,
        index: this.index,
      }).then((data) => {
        this.prolist = data.data.msg;
        this.isLoading = false;
        this.index = 0; //页码也需要初始化
        this.finished = false //
      })
    },

作者:王雅楠

标签:vue,false,vant,data,finished,上拉,数据,加载
From: https://www.cnblogs.com/DTCLOUD/p/17419930.html

相关文章

  • java基于的springboot+vue4S店车辆管理系统,车辆销售管理系统,附源码+数据库+lw文档+PPT
    1、项目介绍首先介绍了4S店车辆管理的技术发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模块图,流程图以及E-R图。然后,设计框架并根据设计的框架编写代码以实......
  • vue实现卡片滚动效果
    vue实现卡片滚动左右切换效果HTML://最外层盒子<divclass="box_1"> //内层盒子 <divclass="box_2" :style="{transform:'translateX'+'('+currentOffset+'px'+')',}"> //中间放需要展示的div,样式......
  • java基于springboot+vue的土特产在线销售平台、特产在线销售商城,附源码+数据库+lw文档
    1、项目介绍考虑到实际生活中在藏区特产销售管理方面的需要以及对该系统认真的分析,将系统权限按管理员和用户这两类涉及用户划分。(1)管理员功能需求管理员登陆后,主要模块包括首页、个人中心、用户管理、特产信息管理、特产分类管理、特产分类管理、特产评分管理、系统管理、订单......
  • Vue进阶(九十八):Vue.set() 和 this.$set()
    (文章目录)一、应用场景有时候我们会看到如下代码:在我们使用vue进行开发的过程中,可能会遇到这样一种情况:当创建vue实例后,再次给对象赋值时,发现数据并不会自动更新到视图上去;当我们去阅读vue文档的时候,会发现有这么一句话:如果在实例创建之后添加新的属性到实例上,它不会触发视图......
  • vue中输入密码带图标可见不可见切换
    data(){return{userName:"",pswd:"",loginDisabled:false,labelPosition:"top",passwordType:'password',passwordIcon:require('@m/assets/images/bukejian.png')......
  • Ubuntu桌面下Vue开发环境搭建
    Ubuntu桌面下Vue开发环境搭建node环境node安装node官网下载node安装包:node-v18.16.0-linux-x64.tar.xz#解压sudotar-xvJfnode-v18.16.0-linux-x64.tar.xz-C/usr/local/cd/usr/local/sudomvnode-v18.16.0-linux-x64/nodejs#配置环境变量cd/etc/profile.d/......
  • vue3 +leaflet + 天地图
    vue3使用leafletnpminstallleaflet-D如果使用了tsnpmi--save-dev@types/leaflet//使用了ts需要下载声明类型//更具需要获取不通过类型的urlfunctiongetUrl(type:string){interfaceMyObject{[key:string]:Array<string>;}letobj:MyObject=......
  • springboot基于vue的MOBA类游戏攻略分享平台、游戏资讯分享平台,附源码+数据库+lw文档+
    1、项目介绍任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,基于java语言设计并实现了MOBA类游戏攻略分享平台。该系统基于B/S即所谓浏览器/服务器模式,应用java技术,选择MySQL作为后台数据库。系统主要包括系统首......
  • 记录--Vue中如何导出excel表格
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助一、导出静态数据1、安装vue-json-excelnpm i vue-json-excel注意,此插件对node有版本要求,安装失败检查一下报错是否由于node版本造成!2、引入并注册组件(以全局为例)importVuefrom"vue";importJsonExce......
  • vue面试题汇总1
    Vue中什么是组件?答:在Vue中,组件是可重用的代码块,可以包含HTML、CSS和JavaScript,并具有自己的状态和生命周期。可以使用组件来构建UI界面并管理应用程序的状态。简要描述Vue的数据绑定方式。答:Vue使用双向数据绑定(two-waydatabinding)方式将模型数据和视图绑定在一起。当视图中的数......