vue实现下拉加载其实没那么复杂


Posted in Javascript onAugust 13, 2019

前言

之前缺乏移动端的经验。一直不知道上拉加载,下拉刷新是怎么实现的。现在正好有个产品有这样一个需求。想了一会没有思路。就去找插件。啥vue-infinite-scroll,vue-virtual-scroll-list。啊呀,牛!无限滚动,十万条数据渲染。

经过我一大圈的折腾。还是默默的卸载了插件。我只是需要实现一个下拉加载,不需要其他这么多的功能。看了看其他人的源码,直接撸了起来,实现一个List组件。

效果展示

vue实现下拉加载其实没那么复杂

MList.vue

<template>
 <div class="list-wrap">
  <div class="content" ref="list" @scroll="onScroll">
   <slot></slot>
  </div>
  <div class="loading" v-show="loading">正在加载数据......</div>
 </div>
</template>
<script lang='ts'>
import { Component, Vue, Watch, Prop } from "vue-property-decorator";
@Component({
 components: {}
})
export default class extends Vue {
 @Prop()
 private loading!: boolean;
 private onScroll() {
  const obj: any = this.$refs.list;
  // clientHeight 视口高度 scrollTop 滚动条离顶部的高度 scrollHeight 列表内容的高度
  if (obj.clientHeight + obj.scrollTop === obj.scrollHeight) {
   this.$emit("toBottom");
  }
 }
}
</script>
<style scoped lang="scss">
.list-wrap {
 width: 100%;
 height: 100%;
 position: relative;
 .content {
  width: 100%;
  height: 100%;
  overflow-y: scroll;
 }
 .loading {
  position: absolute;
  bottom: -20px;
  width: 100%;
  height: 20px;
  color: #ffffff;
 }
}
::-webkit-scrollbar { // 去除滚动条边框
 width: 0 !important;
}
::-webkit-scrollbar {
 width: 0 !important;
 height: 0;
}
</style>

使用组件

<div class="body">
   <m-list @toBottom="fetchNewData()" :loading="loading">
    <code-info class="item" v-for="(item,index) in dataList" :key="index"></code-info>
   </m-list>
</div>

 private dataList: any[] = [1, 2, 3, 4, 5, 6, 7, 8];
 private loading: boolean = false;
 private fetchNewData() {
  this.loading = true;
  setTimeout(() => {
   this.dataList.push(1, 2, 3);
   const ref: any = this.$refs.vueLoad;
   this.loading = false;
  }, 1000);
 }

这里需要注意的是m-list的父容器一定要固定高度,本例为body。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
利用404错误页面实现UrlRewrite的实现代码
Aug 20 Javascript
Ajax,UTF-8还是GB2312 eval 还是execScript
Nov 13 Javascript
按钮JS复制文本框和表格的代码
Apr 01 Javascript
Jquery弹出窗口插件 LeanModal的使用方法
Mar 10 Javascript
处理及遍历XML文档DOM元素属性及方法整理
Aug 23 Javascript
jquery索引在使用中的一些困惑
Oct 24 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
Jul 18 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
May 14 Javascript
80%应聘者都不及格的JS面试题
Mar 21 Javascript
vue项目打包后怎样优雅的解决跨域
May 26 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
Sep 06 Javascript
在vue中使用Base64转码的案例
Aug 07 Javascript
vue中created和mounted的区别浅析
Aug 13 #Javascript
微信小程序实现点击空白隐藏的方法示例
Aug 13 #Javascript
微信小程序使用npm包的方法步骤
Aug 13 #Javascript
Vue中的transition封装组件的实现方法
Aug 13 #Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
Aug 12 #Javascript
详解json串反转义(消除反斜杠)
Aug 12 #Javascript
json 带斜杠时如何解析的实现
Aug 12 #Javascript
You might like
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
JS模拟多线程
2007/02/07 Javascript
推荐dojo学习笔记
2007/03/24 Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
[49:20]2014 DOTA2国际邀请赛中国区预选赛5.21 CIS VS TongFu
2014/05/22 DOTA
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
Python用GET方法上传文件
2015/03/10 Python
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
Python实现按中文排序的方法示例
2018/04/25 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
Mytheresa英国官网:拥有160多个奢侈品品牌
2016/10/09 全球购物
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
实现向右循环移位
2014/07/31 面试题
介绍下Java中==和equals的区别
2013/09/01 面试题
竞选演讲稿范文
2013/12/28 职场文书
园林技术专业求职信
2014/07/28 职场文书
怒海潜将观后感
2015/06/11 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书