Vue-Virtual-Scroller虚拟滚动

前端优化不可不避的一谈之虚拟滚动:众所周知,滚动是直挺挺的往dom树加东西,如果滚太多滚到万级,渲染过多就会卡顿,而vue-virtual-scroll的灵活懒渲染就能解决这个问题

1,下载与配置

npm install --save vue-virtual-scroller@next

 2,main.ts中配置导入

import VueVirtualScroller from 'vue-virtual-scroller'
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'

app.use(VueVirtualScroller)

3,使用如下:

Arr是自定义的比如一个对象数组,至少含有id,min-item-size是最小的高度默认px单位,key-field会读取posts中的id,列表的长度由posts长度决定,行内style的两个样式是必须有的,高度代表视窗高度,然后设置overscroll-scroll才能滚动,其他属性就没必要管了,不用去看官方又臭又长的文档

<template>
    <DynamicScroller
         :style="'overflow':'scroll', 'height':'400px'"
        :items="Arr"
        :min-item-size="100"
        key-field="id"
    >
        <template #default="{ item, index, active }">
            <DynamicScrollerItem
                :item="item"
                :active="active"
                :data-index="index"
            >
                // 这里放置需要循环的代码
            </DynamicScrollerItem>
        </template>
    </DynamicScroller>
</template>

### 如何在 Vue.js 中使用 `vue-virtual-scroller` 实现滚动加载效果 为了实现在 Vue.js 应用程序中通过 `vue-virtual-scroller` 插件来展示大量数据并优化性能,以下是详细的说明: #### 安装与注册插件 首先需要安装该插件并通过适当的方式引入到项目中。对于 Vue 2 和 Vue 3 的环境分别有不同的配置方式。 - **Vue 2**: 可以按照如下方法完成安装和全局注册[^1]: ```bash yarn add vue-virtual-scroller --save ``` 接着,在项目的入口文件 `main.js` 或者类似的初始化脚本中执行以下操作: ```javascript import "vue-virtual-scroller/dist/vue-virtual-scroller.css"; import VueVirtualScroller from "vue-virtual-scroller"; Vue.use(VueVirtualScroller); ``` - **Vue 3**: 对于 Vue 3 版本的应用,则需参照官方文档中的指南[^2]进行调整。同样先运行命令下载依赖包: ```bash npm install vue-virtual-scroller@next ``` 随后在应用的主入口处(通常是 `main.ts` 文件),按下面的方法导入样式表以及组件库,并挂载至实例上[^3]: ```typescript import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'; import { createApp } from 'vue'; import App from './App.vue'; const app = createApp(App); import VirtualScroller from 'vue-virtual-scroller'; app.use(VirtualScroller).mount('#app'); ``` #### 组件的选择与基本设置 此插件提供了两种主要类型的虚拟列表渲染器——`RecycleScroller` 和 `DynamicScroller`。前者适用于每项具有相同高度的情况;后者则允许各条目拥有不同的尺寸,但要求配合子组件 `DynamicScrollerItem` 来定义具体行为逻辑。 如果目标是构建一个简单的固定大小单元格布局,那么可以直接选用 `RecycleScroller` 并指定其属性参数如总数量 (`itemCount`)、单个元素的高度(`itemSize`)以及其他可选选项比如缓冲区域范围等: ```html <template> <div id="example"> <recycle-scroller class="scroller" :items="listItems" :item-size="50" <!-- 假设每个 item 占据 50px --> key-field="id" v-slot="{ item }"> {{ item.name }} </recycle-scroller> </div> </template> <script> export default { data() { return { listItems: Array.from({ length: 100 }, (_, i) => ({ id: i, name: `Item ${i}` })) }; } }; </script> <style scoped> .scroller { height: 400px; /* 设置容器高度 */ } </style> ``` 上述例子展示了如何利用 `RecycleScroller` 创建一个能够高效处理百级甚至千级别以上规模的数据集视图结构。 然而实际开发过程中可能会碰到某些特定场景下的异常状况,例如超出最大渲染限制时报错 `"Rendered items limit reached"` [^4] 。针对这类问题通常可以通过调节内部缓存策略或者增加硬件资源分配等方式加以缓解解决。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值