vue滚动到底,请求后端数据分页加载更多

一个可滚动的内容区域,绑定滚动事件

  <div class="lines" @scroll="scrollBottom">
    ...
  </div>
  .lines {
    height: calc(50vh - 100px);
    overflow: auto;
    }
    /** 判断滚动到底部 */
    scrollBottom(e) {
      const { scrollTop, scrollHeight, clientHeight } = e.srcElement
      // 滚动距离顶部高度 + 可视区域高度 >= 滚动内容高度,说明滚动到底
      if (scrollTop + clientHeight >= scrollHeight) {
        if (this.noMore) return 
        this.pageIndex++
        this.getMoreData()
      }
    },
   /** 请求后端分页数据,滚动到底加载更多 */
    async getMoreData() {
      const { data: res } = await axios.post(`xxxx`, {
        pageSize: 4,
        pageIndex: this.pageIndex- 1,
      })
      if (res.code === 200) {
        // 数组有值说明还有数据
        if(res.data.length){
           this.pageIndex++
           this.data = [...this.data,...res.data] // 合并数据
        }
        else {
          this.noMore = true // 用一个变量来记录没有更多数据了
        }
      } 
    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值