vue 滚动加载无限长列表

本文介绍了如何结合vue-infinite-scroll和vue-virtual-scroller实现滚动加载无限长列表,以提高大数据量时的性能,并解决了列表卡顿问题。详细讲解了各个组件的安装和使用,以及在切换列表数据时的处理方法,同时列举并解答了可能出现的问题。
部署运行你感兴趣的模型镜像

结合vue-infinite-scroll和vue-virtual-sroller实现滚动加载无限长列表,带有虚拟化(virtualization)功能,能够提高数据量大时候长列表的性能,解决列表数据量大页面卡顿问题

滚动加载vue-infinite-scroll

vue-infinite-scroll文档

采用指令方式实现滚动到底部加载

安装

npm install vue-infinite-scroll --save

使用

<template>
 <div
    v-infinite-scroll="loadMore"
    infinite-scroll-disabled="busy"
    infinite-scroll-distance="10"
  >
    {{ item.value }}
  </div>
</template>

import infiniteScroll from 'vue-infinite-scroll'

export default {
    directives: { infiniteScroll },
    methods: {
        loadMore () {}
    }
}

 

虚拟化加载

vue-virtual-scroller文档

安装

npm install --save vue-virtual-scroller

使用

import { RecycleScroller } from 'vue-virtual-scroller'
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'

Vue.component('RecycleScroller', RecycleScroller)
<RecycleScroller
    class="scroller"
    :items="list"
    :item-size="50"
    key-field="id"
    v-slot="{ item }"
  >
    <div class="user">
      {{ item.value }}
    </div>
  </RecycleScroller>

重要:设置高度,否则无效

.scroller {
  height: 200px;
}

结合使用

<RecycleScroller
    class="scroller"
    :items="list"
    :item-size="50"
    key-field="id"
    v-slot="{ item }"
    v-infinite-scroll="loadMore"
    infinite-scroll-disabled="busy"
    infinite-scroll-distance="10"
  >
    <div class="user">
      {{ item.value }}
    </div>
  </RecycleScroller>

如何切换列表数据

如tab类型,点击另一个重新加载列表数据

可以先把原list设置[],然后设置新数组

先设置成[]是为了让滚动条回到最顶部,需要在$nextTick里设置新数组

this.list = []
this.$nextTick(() => {
    this.list = otherList
})

效果如下:列表项已经有132数据,但是dom节点始终只有13个,以此保证性能

虚拟dom效果

可能遇到的问题

1、滚动不加载,即loadMore方法不调用?

    有可能是因为你的元素包裹在v-if下,这样不会触发

2、无限滚动虚拟节点滚到下面都是空白?

    首先,你最好不要修改组件的样式,否则可能导致虚拟加载失效

    然后   item-size="32" 设置一下

3、虚拟加载没有生效,加载出了全部节点?

    滚动区域要设置高度

4、切换数据滚动条没有回到顶部

    可以先把原list设置[],然后在$nextTick里设置新数组

 

测试代码

 

您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值