vue 触底加载更多的逻辑 以及 触底后下一页没有数据,如何避免重复发送请求?

vue 触底加载更多的逻辑 以及 触底后下一页没有数据,如何避免重复发送请求?首先,注册一个滚动事件加载处理程序,获取到可视区域的高度,滚动的高度,以及可滚动文档的高度,判断可滚动文档高度等于可视区域高度加滚动高度,如果相同,就可以判断它已经触底了,在这里调用一下请求列表的地址,获取到下一页的页数,以此类推下去,就可以实现触底加载更多。

1.触底加载更多

  首先,注册一个滚动事件加载处理程序,获取到可视区域的高度,滚动的高度,以及可滚动文档的高度,判断 可滚动文档高度等于可视区域高度加滚动高度,如果相同,就可以判断它已经触底了,在这里调用一下请求列表的地址,获取到下一页的页数,以此类推下去,就可以实现触底加载更多。

 mounted(){
       window.addEventListener("scroll",this.scrollFn)
    },

methods:{
    async scrollFn(){
         //可视区域
        let clientHeight = document.documentElement.clientHeight - 18
        console.log(clientHeight);
         // 滚动文档高度
        let scrollHeight = document.body.scrollHeight
        console.log(scrollHeight);
         // 已滚动的高度
        let scrollTop = parseInt(document.documentElement.scrollTop)
        console.log(scrollTop);
        if (scrollTop + clientHeight == scrollHeight) {
          / **在这里请求接口**/
   }
}

2.触底后下一页没有数据,如何避免重复发送请求

 1.在data定义一个为 true 的布尔值当作判断条件,值为 false 时则 return 阻止事件 

2.获取到自己页面一页几条数据,判断 刷新出来的数据的长度,小于自己一页的数据长度时,让布尔值为false,就可以实现避免重复发送请求。

data(){
  return{
     tag:true
  }
 }
mounted(){
       window.addEventListener("scroll",this.scrollFn)
    },

methods:{
    async scrollFn(){
         //可视区域
        let clientHeight = document.documentElement.clientHeight - 18
        console.log(clientHeight);
         // 滚动文档高度
        let scrollHeight = document.body.scrollHeight
        console.log(scrollHeight);
         // 已滚动的高度
        let scrollTop = parseInt(document.documentElement.scrollTop)
        console.log(scrollTop);
        if (scrollTop + clientHeight == scrollHeight) {
          if(!this.tag) return
          / **在这里请求接口**/
           /**假设这里一页5条数据**/
         if(list.length < 5){
            this.tag = false
        }
   }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/36272.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注