vue瀑布流组件上拉加载更多

本文介绍如何在移动端H5页面中使用Vue实现瀑布流布局,并且添加上拉加载更多的功能。通过理解用户交互逻辑,将其转化为代码逻辑,结合Vue生命周期,绑定和解绑事件。文中提供了一个简单的Vue组件模板,包括核心的load函数和pointDown、pointMove、pointUp事件回调,以在适当的时候加载数据并更新页面。
摘要由CSDN通过智能技术生成

最近在做移动端h5页面,所以分页什么的就不能按照传统pc端的分页器的思维去做了,这么小的屏幕去点击也不太方便一般来讲移动端都是上拉加载更多,符合正常使用习惯。

首先简单写一下模板部分的html代码,,很简单清晰的逻辑:

<template>
  <div class="loadmore">
    <div class="loadmore__body">
      <slot></slot>
    </div>
    <div class="loadmore__footer">
      <span v-if="loading">
        <i class="tc-loading"></i>
        <span>正在加载</span>
      </span>
      <span v-else-if="loadable">上拉加载更多</span>
      <span v-else>没有更多了</span>
    </div>
  </div>
</template>

然后就是业务部分了

在动手写组件之前,先理清需求:

加载页面 -> 滑到底部 -> 上拉一定距离 -> 加载第二页 -> 继续前面步骤 -> 没有更多

这是一个用户交互逻辑,而我们需要将其映射为代码逻辑:

首屏自动加载第一页 -> 滑动到底部&&按下时候滑动距离Y轴有一定偏移量 -> 请求后端加载第二页 -> 根据返回字段判断是否还有下一页

有了代码逻辑,主干就出来了,加载和判断由事件来控制,而又作为一个vue组件,我们需要配合vue生命周期来挂载事件和销毁事件

export default {
    mounted() {
        // 确定容器
        // 容器绑定事件
    },
    beforeDestory() {
        //  解绑事件
    },
}

如果没有解绑的话,每次你加载组件,就会绑定一次事件…

然后我们需要一些核心事件回调方法来在合适的时间加载数据渲染页面, 回想一下,第一我们需要http获取数据的load函数,然后我们需要三个绑定事件的回调函数pointDown(), pointMove(), pointUp(),分别对应用户按下、移动、弹起手指操作:

export default {
    ···
    methods:{
      /**
       * 加载一组数据的方法
       */
      load() {
         // 设置options
        this.$axios.request(options).then((res) => {
           // 获取数据后的处理
        }).catch((e) => {
          // 异常处理
        })
      },
       /**
       * 鼠标按下事件处理函数
       * @param {Object} e - 事件对象
       */
      pointerdown(e) {
        // 获取按下的位置
        this.pageY = e.changedTouches ? e.changedTouches[0].pageY : e.pageY
      },
       /**
       * 鼠标移动事件处理函数
       * @param {Obje
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值