十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇文章给大家分享的是有关怎么在vue中使用loadmore组件实现一个上拉加载更多功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
创新互联建站于2013年开始,是专业互联网技术服务公司,拥有项目成都网站设计、成都做网站、外贸网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元平阴做网站,已为上家服务,为平阴各地企业和个人服务,联系电话:028-86922220
正在加载 上拉加载更多 没有更多了
然后就是业务部分了
在动手写组件之前,先理清需求:
加载页面 -> 滑到底部 -> 上拉一定距离 -> 加载第二页 -> 继续前面步骤 -> 没有更多
这是一个用户交互逻辑,而我们需要将其映射为代码逻辑:
首屏自动加载第一页 -> 滑动到底部&&按下时候滑动距离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 {Object} e - 事件对象 */ pointermove(e) { const container = this.$container const pageY = e.changedTouches ? e.changedTouches[0].pageY : e.pageY const moveY = pageY - this.pageY // 如果已经向下滚动到页面最底部 if (moveY < 0 && (container.scrollTop + Math.min( global.innerHeight, container.clientHeight, )) >= container.scrollHeight) { // 阻止原生的上拉拖动会露出页面底部空白区域的行为(主要针对iOS版微信) e.preventDefault() // 如果上拉距离超过50像素,则加载下一页 if (moveY < -50) { this.pageY = pageY this.load() } } }, /** * 鼠标松开事件处理函数 */ pointerup() { // 这边就是取消拖动状态,需要注意在拖动过程中不要再次触发一些事件回调,否侧乱套 this.dragging = false }, }, ··· }
基本上主干已经算完工了,一些props传入或者一些逻辑控制细节需要再额外添加,贴出整个组件的源码:
正在加载 上拉加载更多 没有更多了
以上就是怎么在vue中使用loadmore组件实现一个上拉加载更多功能,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。