首页 > 其他分享 >Vue3+vant+ts 上滑加载,解决上滑调用多次数据的问题

Vue3+vant+ts 上滑加载,解决上滑调用多次数据的问题

时间:2022-12-28 14:24:16浏览次数:66  
标签:loading false vant finished ts state Vue3 true 加载

之前用vue2的时候,写过vue2的用法,链接在这里点击跳转哈,用得挺好的,也没啥问题,照葫芦画瓢的做出来了,但是有问题,下滑之后调用多次数据,按理说

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

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

具体代码如下:

:immediate-check="false" 设置为false,在onMounted里面去调用数据
还有就是一进来加载两次的问题,有时候可能是因为在html,bodys设置了overflow:hidden,会多次请求数据
页面:
<van-list v-model:loading="loading" :finished="finished" :finished-text="nodata" :immediate-check="false" @load="getList" >
        <div                  v-for="item in proList"                 :key="item.Id"                 >         </div>
 </van-list>
<script lang="ts" setup> onMounted(() => {     getList(); }) const loading = ref(false); const finished = ref(false); const state = reactive<any>({        proList: [], //产品列表数据        nodata: "",        page: 1, //页码       pageSize: 20, //每页条数 })    //获取数据 const getList = ()=>{          let params = {         pageNo:state.page,         pageSize:state.pageSize     };     axios.getdata(params).then((res:any) => {         if (res.code == 200) {             state.page ++;   //页数+1             loading.value = false;  // 加载状态结束                     state.proList = state.proList.concat(res.data);                     //判断是否是最后一页                     if (res.data.length < state.pageSize) {                         finished.value = true ;                         state.nodata = "已经到底了";                     }                     if (state.proList.length == 0) {                         finished.value = true;                         state.nodata = "暂无数据";                     }            }     }) }  </script>

 

标签:loading,false,vant,finished,ts,state,Vue3,true,加载
From: https://www.cnblogs.com/xbxxf/p/17010012.html

相关文章

  • echarts去掉y轴线、设置x轴线的颜色、x轴文字颜色
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>第一个ECharts实例</title><!--引入echarts.js--><scriptsrc="https://cdn.staticfile.org/echart......
  • 【技术分享】如何实现功能完备性能优异的RTMP、RTSP播放器?
     技术背景这几年,我们对接了太多有RTSP或RTMP直播播放器诉求的开发者,他们当中除了寻求完整的解决方案的,还有些是技术探讨,希望能借鉴我们播放端的开发思路或功能特性,完善自己......
  • Python爬虫实战,requests+openpyxl模块,爬取小说数据并保存txt文档(附源码)
    前言今天给大家介绍的是Python爬取小说数据并保存txt文档,在这里给需要的小伙伴们代码,并且给出一点小心得。首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基......
  • Vue3 Composition API 的优势
     1.OptionsAPI存在的问题使用传统OptionsAPI中,新增或者修改一个需求,就需要分别在data,methods,computed里修改。 2.CompositionAPI的优势我们可以更加优雅的组织......
  • Vue3之provide 与 inject
     provide与inject 作用:实现祖与后代组件间通信,儿子组件中也能用这种方式,但是一般不这么用,父子组件传信息一般直接用props属性。套路:父组件有一个 provide 选项......
  • Vue3之响应式数据的判断
    响应式数据的判断isRef:检查一个值是否为一个ref对象isReactive:检查一个对象是否是由 reactive 创建的响应式代理isReadonly:检查一个对象是否是由 readonly......
  • Vue3之customRef
    customRef作用:创建一个自定义的ref,并对其依赖项跟踪和更新触发进行显式控制。比如在input更新数据之后,设置指定时间之后再在h3标签上重新展示最新的数据:<templ......
  • Vue3之toRaw 与 markRaw
    toRaw与markRawtoRaw:作用:将一个由reactive生成的响应式对象转为普通对象。ref的对象不行使用场景:用于读取响应式对象对应的普通对象,对这个普通对象的所有操作,不会引......
  • Vue3之readonly 与 shallowReadonly
    readonly与shallowReadonlyreadonly:让一个响应式数据变为只读的(深只读)。shallowReadonly:让一个响应式数据变为只读的(浅只读)。应用场景:不希望数据被修改时。示......
  • Vue3之shallowReactive 与 shallowRef
    shallowReactive与shallowRefshallowReactive:只处理对象最外层属性的响应式(浅响应式)。shallowRef:只处理基本数据类型的响应式,不进行对象的响应式处理。什么时......