前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >牛皮!一款支持百万量级的无限滚动组件

牛皮!一款支持百万量级的无限滚动组件

作者头像
程序员老鱼
发布2023-05-23 19:25:14
3920
发布2023-05-23 19:25:14
举报
文章被收录于专栏:前端实验室前端实验室

哈喽,大家好!,我是前端实验室的大师兄!

滚动相信大家都做过,但是不知道大家当遇到大量数据甚至几百万条数据时该怎么办呢?

或许有小伙伴说:用分页呀,每次只展示有限的数据,需要更多的时候点击下一页呀

分页确实是一种解决方案,但是却不是最好的体验方式。无限滚动就是解决这种场景更好的技术手段

而今天就是给大家分享一款可以承受百万量级数据的无限滚动组件vue3-infinite-list

vue3-infinite-list

vue3-infinite-list是一个针对vue3的短小精悍的无限滚动组件,它体积非常小、零依赖gzip只有 3kb。并且使用的是最新的技术栈 Vue3 setup api + TypeScript

特点

  • 体积小 & 零依赖 – gzipped 后只有 3kb
  • 百万级列表渲染, 不费吹灰之力
  • 支持滚动到指定条目 或 指定初始滚动偏移量
  • 支持固定 或 可变 宽/高
  • 垂直 or 水平 列表
  • 使用简单可以结合各类UI库使用
  • 丰富的demo演示案例

安装

npm

代码语言:javascript
复制
npm install vue3-infinite-list --save

或者 yarn

代码语言:javascript
复制
yarn add vue3-infinite-list

使用

在应用模块内引入无限滚动组件

代码语言:javascript
复制
import InfiniteList from 'vue3-infinite-list';

用无限滚动组件标签包裹待滚动数据列表

代码语言:javascript
复制
 <InfiniteList 
   :data="data" 
   :width="'100%'" 
   :height="500" 
   :itemSize="50" 
   :debug="debug" 
   v-slot="{ item, index }"
   >
    <div class="li-con">{{ index + 1 }} : {{ item }}</div>
  </InfiniteList>

使用非常简单,内部可以结合element-plus或者antd-vue、tdesign等UI库。

而且还可以动态控制滚动高度(每一项item高度值是变化的)

代码语言:javascript
复制
  <InfiniteList
    :data="data"
    :width="'100%'"
    :height="520"
    :itemSize="getItemSize"
    :debug="debug"
    v-slot="{ item, index }"
  >
    <div class="li-con">item {{ index }} : {{ item }}</div>
  </InfiniteList>
  
  // 通过这个函数可以动态设置元素宽高.
const getItemSize = (i: number): number => {
      switch (i % 4) {
        case 1:
          return 80;
        case 2:
          return 50;
        case 3:
          return 100;
        default:
          return 200;
      }
  };

功能

  1. item固定高度类型, 垂直滚动(默认)
  2. 设置滚动方向为水平方向
  3. 动态控制滚动高度(每一项item高度值是变化的)
  4. 滚动到指定元素位置(可以设置对齐方式)
  5. 支持动态变更数据
  6. 设置额外渲染元素的数量

github: https://github.com/tnfe/vue3-infinite-list

文档地址:https://tnfe.github.io/vue3-infinite-list/#/demo1

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • vue3-infinite-list
    • 特点
      • 安装
        • 使用
          • 功能
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档