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 相关文章推荐
枚举JavaScript对象的函数
Dec 22 Javascript
24款非常有用的 jQuery 插件分享
Apr 06 Javascript
JavaScript中的连字符详解
Nov 28 Javascript
JavaScript cookie的设置获取删除详解
Feb 11 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
Sep 01 Javascript
jQuery和AngularJS的区别浅析
Jan 29 Javascript
jQuery实现select模糊查询(反射机制)
Jan 14 Javascript
浅析vue中常见循环遍历指令的使用 v-for
Apr 18 Javascript
jQuery实现的页面详情展开收起功能示例
Jun 11 jQuery
react native 文字轮播的实现示例
Jul 27 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
May 01 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
Dec 01 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
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
PHP多维数组排序array详解
2017/11/21 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
jquery 事件对象属性小结
2010/04/27 Javascript
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
jQuery中使用each处理json数据
2015/04/23 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
Python实现在线程里运行scrapy的方法
2015/04/07 Python
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
如何理解python面向对象编程
2020/06/01 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
高中军训感想300字
2014/03/04 职场文书
法制报告会主持词
2014/04/02 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
趣味运动会广播稿
2014/09/13 职场文书
银行贷款收入证明
2014/10/17 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server