位置: IT常识 - 正文

Element UI - v-infinite-scroll无限滚动组件

编辑:rootadmin
Element UI - v-infinite-scroll无限滚动组件

推荐整理分享Element UI - v-infinite-scroll无限滚动组件,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

Element UI - v-infinite-scroll无限滚动组件

一、v-infinite-scroll无限滚动组件使用详解

1、v-infinite-scroll="load" //load无限滚动加载的方法 2、infinite-scroll-disabled //是否禁用无限滚动加载 3、infinite-scroll-delay //节流时延,单位为ms 4、infinite-scroll-distance //触发加载的距离阈值,单位为px 5、infinite-scroll-immediate //是否立即执行加载方法,以防初始状态下内容无法撑满容器。 //默认情况下,infinite-scroll-disabled是false,因此如果组件使用无限滚动加载组件,即使在vue不进行加载方法的调用,组件也会调用该方法,因此如果需要控制的话,尽量是使用infinite-scroll-disabled属性来进行加载方法是否调用的控制。

二、组件无限加载原因及解决方式 1、问题:使用无限加载的div没有设置高度导致无限加载 解决方案: <div v-infinite-scroll="load" :infinite-scroll-disabled="isInfiniteScrollDisabled" style="margin-bottom: 20px;height:640px;overflow-y:auto" //style的设置非常关键,一定要设置height高度 > 在指令使用的div一定要限定高度(height:xxx; overflow-y:auto)load加载方法将在拉取底部时才会被执行。 2、问题:为什么在vue中并没有在任何生命周期中进行load方法的调用,直接就加载了方法? 解决方案:使用 :infinite-scroll-disabled="isInfiniteScrollDisabled“属性来进行控制。 3、代码demo演示

<template> <div class="vue-class-name"> <div v-infinite-scroll="load" :infinite-scroll-disabled="isInfiniteScrollDisabled" style="margin-bottom: 20px;height:640px;overflow-y:auto" > <div v-for="item in dataList" :key="item.index" style="display: inline-block;margin:0px 10px 10px 0px" > <span>{{item}}</span> </div> <el-empty description="No Data" v-if="dataList.length == 0" style="height:650px;overflow-y:auto;text-align:center" ></el-empty> <!-- 这个div一定要放在使用指令的div里面--> <div align="center" v-if="dataList.length > 0"> <div class="drawer-footer"> <span v-if="pullStatus === $enum.STATUS.START"> Pull up to load more </span> <span v-if="pullStatus === $enum.STATUS.LOADING"> loading <i class="el-icon-loading"></i> </span> <span v-if="pullStatus === $enum.STATUS.NODATA"> no more data </span> </div> </div> </div> </div></template><script>export default { name: 'VueName', mixins: [], components: {}, props: {}, data: function() { return { pullStatus: this.$enum.STATUS.START, pageIndex: 1, pageSize: 20, dataList: [], isInfiniteScrollDisabled: false, }; }, computed: {}, watch: { //事件监听:当刷新浏览器页面或者切换项目的时候进行方法调用 projectSpaceId: function(value, oldValue) { this.dataList = []; this.pageIndex = 1; this.pullStatus = this.$enum.STATUS.START; this.getLoadMoreData(); }, }, created() {}, mounted() { //一进入页面进行方法调用 this.getLoadMoreData(); }, methods: { getLoadMoreData() { if (this.pullStatus != this.$enum.STATUS.START) { return; } this.pullStatus = this.$enum.STATUS.LOADING; this.isInfiniteScrollDisabled = true; let params = {};//请求参数,可省略 this.getData(params).then(resp => { if (data.length < this.pageSize ) { this.pullStatus = this.$enum.STATUS.NODATA; } else { this.pageIndex++; this.pullStatus = this.$enum.STATUS.START; } if (resp.data.length > 0) { this.dataList = this.dataList.concat(resp.data);//数组拼接,得到拼接后的数据 } this.isInfiniteScrollDisabled = false; }); }, }, beforeDestroy() { this.dataList = []; //清空数组};</script><style scoped></style>//常量定义export const STATUS= { START: 0, // 上拉加载 LOADING: 1, // 加载中 NODATA: 2, // 没有更多数据};

三、总结 当然,这个组件还有很多可以优化的地方,比如:可以将下面这一段代码抽成公共组件,使用该组件的地方,只需要传当前的pullStatus状态即可。

<div class="drawer-footer"> <span v-if="pullStatus === $enum.STATUS.START"> Pull up to load more </span> <span v-if="pullStatus === $enum.STATUS.LOADING"> loading <i class="el-icon-loading"></i> </span> <span v-if="pullStatus === $enum.STATUS.NODATA"> no more data </span> </div>

同时,也可以封装成一个mixins,这样同一个项目,如果多处需要滚动分页,那么这样代码就会更加简洁和方便,下面我粘贴一下mixins里面的代码:

/** * 页面无限滚动加载*/export default { name: "infiniteScrollMixins", data() { return { pullStatus: this.$enum.STATUS.START, pageIndex: 1, pageSize: 20, } }, computed: {}, created() {}, methods: { loadMoreData() { if (this.pullStatus != this.$enum.STATUS.START) { return; } this.pullStatus = this.$enum.STATUS.LOADING; if(this.getLoadMoreData) { //使用该mixins的组件需要定义该方法 this.getLoadMoreData(); } }, setPullStatus(data = []) { if (data.length < this.pageSize ) { this.pullStatus = this.$enum.STATUS.NODATA; } else { this.pageIndex++; this.pullStatus = this.$enum.STATUS.START; } } }, beforeDestroy() {},};

如何使用封装的mixins? 1、导入: import 名称 from ‘路径’; 2、

本文链接地址:https://www.jiuchutong.com/zhishi/297508.html 转载请保留说明!

上一篇:【小程序从0到1】宿主环境|WXML|WXSS|JS逻辑交互(微信小程序从零)

下一篇:【已解决】ERROR:The testing results of the whole dataset is empty(error出错)

  • 苹果手机怎样关机和开机(苹果手机怎样关机重启手机)

    苹果手机怎样关机和开机(苹果手机怎样关机重启手机)

  • 苹果退出盲人黑屏模式(苹果退出盲人黑屏怎么办)

    苹果退出盲人黑屏模式(苹果退出盲人黑屏怎么办)

  • 虚拟桌面有什么用(虚拟桌面什么意思)

    虚拟桌面有什么用(虚拟桌面什么意思)

  • 腾讯会员是从哪天算一个月(腾讯会员从哪里看几个人登录)

    腾讯会员是从哪天算一个月(腾讯会员从哪里看几个人登录)

  • vivos6如何截屏(vivo s六怎么截屏)

    vivos6如何截屏(vivo s六怎么截屏)

  • rpt文件用什么软件打开(rp文件可以用什么打开)

    rpt文件用什么软件打开(rp文件可以用什么打开)

  • 电话卡如何注销(联通电话卡如何注销)

    电话卡如何注销(联通电话卡如何注销)

  • 激萌怎样用照片制作漫画头像(激萌怎么照相好看)

    激萌怎样用照片制作漫画头像(激萌怎么照相好看)

  • 快手点赞马上取消对方知道吗(快手点赞马上取消会看到吗)

    快手点赞马上取消对方知道吗(快手点赞马上取消会看到吗)

  • 新注册的微信号一天可以加多少人(新注册的微信号有风险提示怎么办)

    新注册的微信号一天可以加多少人(新注册的微信号有风险提示怎么办)

  • 电脑显示睡眠模式怎么回事(电脑显示睡眠模式无视频输入)

    电脑显示睡眠模式怎么回事(电脑显示睡眠模式无视频输入)

  • 小米手机如何删除软件(小米手机如何删除NFC卡)

    小米手机如何删除软件(小米手机如何删除NFC卡)

  • 电脑怎么一键回到桌面(电脑怎么一键回到顶部)

    电脑怎么一键回到桌面(电脑怎么一键回到顶部)

  • 抖音怎么添加拼多多链接(抖音怎么添加拼团链接)

    抖音怎么添加拼多多链接(抖音怎么添加拼团链接)

  • 红米k20pro和尊享版有什么区别(红米k20pro和尊享版屏幕通用吗)

    红米k20pro和尊享版有什么区别(红米k20pro和尊享版屏幕通用吗)

  • vivo手机运行内存怎么清理(vivo手机运行内存12+8是什么意思)

    vivo手机运行内存怎么清理(vivo手机运行内存12+8是什么意思)

  • 苹果手机抬头灯怎么开(苹果手机抬头灯显示在哪里设置)

    苹果手机抬头灯怎么开(苹果手机抬头灯显示在哪里设置)

  • ipad家长控制如何设置(ipad 家长控制)

    ipad家长控制如何设置(ipad 家长控制)

  • airpods2买无线还是有线(airpods2无线充电需要单独买无线充电器吗)

    airpods2买无线还是有线(airpods2无线充电需要单独买无线充电器吗)

  • 微信号一个手机号能注册几个(怎么弄俩微信号一个手机)

    微信号一个手机号能注册几个(怎么弄俩微信号一个手机)

  • word中双窄线长什么样(word的双窄线)

    word中双窄线长什么样(word的双窄线)

  • 华为爱奇艺怎么取消自动续费(华为爱奇艺怎么关闭弹幕)

    华为爱奇艺怎么取消自动续费(华为爱奇艺怎么关闭弹幕)

  • 5g换手机要不要换卡

    5g换手机要不要换卡

  • 若依框架前端切换TagView时刷新问题(若依框架用到的技术)

    若依框架前端切换TagView时刷新问题(若依框架用到的技术)

  • 增值税建筑服务税率变化时间
  • 递延所得税资产怎么计算
  • 可供出售金融资产新准则叫什么
  • 上年少计提工会经费本年怎么调整
  • 出口货物不能退税的原因
  • 退回投资款转为借款怎么记账
  • 工资结算单属于通用凭证吗
  • 房地产 结转
  • 应付账款坏账处理说明
  • 企业支付给职工的工资和职工福利应当计入
  • 本票汇票支票的区别
  • 超市热卖食品
  • 差额征税发票的图片
  • 特殊建造行业
  • 进项税额转出是什么意思
  • 研发废料收入实务中如何冲减研发费用?
  • 销售折扣和销售折让的账务处理
  • 房地产所得税税负率计算公式
  • 机票进项税额怎么申报
  • 跨区域个人所得税延期情况说明
  • 公司对外汇款需要什么手续
  • 供热公司向用户提供
  • 购销合同没写签订日期违法吗
  • 企业所得税税率2.5% 5% 25%
  • 建筑劳务预缴税款后怎么申报
  • 进项税额转出月底如何结转
  • 小规模纳税人个税怎么申报
  • php核心编程
  • 暂估收入入账冲回如何会计分录
  • 工业会计做账的基本流程
  • 贴现短期无息应付票据
  • 增值税专用发票查询系统官方网站
  • 哪些项目容易漏缴个人所得税?
  • 房地产企业公司
  • php substr()
  • framework7教程
  • 企业低值易耗品摊销计入产品成本的方法
  • 微信小程序使用时间记录查询
  • vue添加css
  • 外经交的个税如何计算
  • 要点初见:Stable Diffusion NovelAI模型优质文字Tag汇总与实践【魔咒汇总】
  • 如何判断自己风寒还是风热
  • 资产处置损益计算公式
  • React - Redux Hooks的使用细节详解
  • update-initramfs -u命令
  • 出口退税抵减应计入哪里
  • 个人出租非住房房产税
  • python从键盘输入正整数n,计算1+2+3
  • 固定资产折旧率如何计算
  • 建设工程审计报告包括哪些内容
  • 公司购进设备会计分录
  • 固定资产减少如何处理
  • 公司注册资金认缴期限
  • 增值税进项税额转出的情况有哪些
  • 减免税做营业外收入的会计分录
  • 劳务报酬税目
  • 退回现金会计分录
  • 计提资产减值准备会计科目
  • xp系统无法登录系统
  • linux防止攻击
  • linux系统中命令什么大小写
  • gwsloader.exe是什么意思
  • 如何升级win
  • shwiconem.exe - shwiconem是什么进程 有什么用
  • win8 应用商店
  • layui框架中修改用户成功后怎么跳转到登录界面
  • Android游戏开发读后感
  • cocos2d::Vector
  • javascript控制语句
  • lru缓存机制是什么
  • getmac/v
  • 用python发邮件
  • unity study
  • js实现功能
  • unity-chan
  • 可扩展的敏捷方法有哪两种观点,并作以简单阐述?
  • 云南省国家税务局
  • 美容行业增值税率是多少
  • 浙江欧派和广东欧派哪个好
  • 关于公司纳税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设