Vue3+vant+ts 上滑加载解决上滑调用多次数据的问题(推荐)

之前用vue2的时候,写过vue2的用法,文末扩展知识点击查看,用得挺好的,也没啥问题,照葫芦画瓢的做出来了,但是有问题,下滑之后调用多次数据,按理说

组件通过 loading 和 finished 这俩变量控制加载状态,当组件滚动到底部时,会触发 load 事件并将 loading 设置成 true。此时可以发起异步操作并更新数据,数据更新完毕后,将 loading 设置成 false 即可。若数据已全部加载完毕,则直接将 finished 设置成 true 即可。

但是我打印了一下,在调用方法的时候没有把loading设置为true,还是false,后来才发现,和vue2还是有区别的,不能直接用v-model,得用v-model:loading,还是得看手册啊,不能老看之前做的项目

具体代码如下:

页面:

        
        

扩展知识点:

Vue插件—vant当中van-list的使用

先看官网  点这里

1、安装

npm i vant -S

2、引入 在src/main.js里面引入 

import Vue from 'vue';
import { List } from 'vant';
Vue.use(List);

3、使用  teamplate

//van-list  是必须带的标签,里面的标签可以自己加
  
         
  • {{item.name}}
  • script

    export default {
      name: 'Home',
      data(){
        return{
          list: [],
          loading: false,//加载状态
          finished: false,//是否加载
          page: 1,//页数
        limit: 15//条数
        }
      },
     methods:{
        load_more: function() {
          this.page += 1;//页数+1
          this.onLoad();
        },
        onLoad() {
            let data = {
            page: this.page,
            pageSize: this.limit
            }
            axios.post('api/test/xbxxf',data)
            .then(res => {
              if(res.data.code=200){   
                // 加载状态结束
                this.loading = false;
                this.list = this.list.concat(res.data.data.list);//追加数据
                if (res.data.data.page == res.data.data.pageNum || res.data.data.list.length == 0) {  //数据全部加载完成
                  this.finished = true;
                }else{
                  this.finished = false;
                }        
              }  
            })
          }
    }
    }

    另外注意css,因为滑动加载,看你滑动的是不是当前模块,如果滑动的不是当前的模块,是父元素或者其他的元素,不会触发加载事件,也不会请求数据    

    到此这篇关于Vue3+vant+ts 上滑加载解决上滑调用多次数据的问题的文章就介绍到这了,更多相关Vue3 vant ts 上滑加载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    你可能感兴趣的:(Vue3+vant+ts 上滑加载解决上滑调用多次数据的问题(推荐))