使用vue-virtual-scroller遇到的问题及解决

 更新时间:2024年03月21日 10:04:06   作者:言木土  
这篇文章主要介绍了使用vue-virtual-scroller遇到的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

问题一

报错Error in nextTick: “Error: Key is undefined on item (keyField is ‘userid’)”

字面上的意思,keyField的参数设置不对,导致找不到唯一id,需要设置填充数据的唯一key,例如你的数据格式是:

list = [
	{ userId: 1001, username: "xiaoming"},
	{ userId: 1002, username: "liming"},
	...
]

那么key-field应该设置为userId

<RecycleScroller
      class="scroller"
      :items="list"
      :item-size="32"
      key-field="userId"
      v-slot="{ item }"
    >
      <div class="user">
        {{ item.username }}
      </div>
    </RecycleScroller>

问题二

报错Error in v-on handler: “Error: Rendered items limit reached”

外层div应该设置固定高度,不然虚拟列表不起作用。

<template>
  <div class="main">
    <RecycleScroller
      class="scroller"
      :items="list"
      :item-size="32"
      key-field="userId"
      v-slot="{ item }"
    >
      <div class="user">
          <div>{{ item.username }}</div>
      </div>
    </RecycleScroller>
  </div>
</template>

<style scoped>
.main {
  height: 100vh;
}
.scroller {
  height: 100%;
}
</style>

这里我固定高度设置为屏幕高度,在实际使用中,大家可以根据项目要求设置固定高度。

问题三

虚拟列表只显示了一部分

这里可能有两个原因引起:

  • 1、内容的高度低于min-item-size参数
<DynamicScroller
            :items="items"
            :min-item-size="54"
            keyField="userId"
            class="scroller">
            <template v-slot="{ item, index, active }">
                <DynamicScrollerItem
                    :item="item"
                    :active="active"
                    :size-dependencies="[item.UserName]"
                    :data-index="index"
                    class="user">
                    
                </DynamicScrollerItem>
            </template>
</DynamicScroller>

<style scoped>
.user {
  min-height: 54px;//这里不能低于54
  padding: 0 12px;
  display: flex;
  align-items: center;
}
</style>

这里min-item-size设置为54,如果DynamicScrollerItem的最小高度设置低于54,可能就只会显示开头部分item。

  • 2、没有引入样式
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'

没有引入这个样式,也会导致item显示不全。

问题四

有空白的Item

可能大家发现,有些地方的item是空白的。

有空白item的原因就是你使用列表数据里面相邻数据有重复的key,拿上面的例子数据来说就是连续两个重复数据的userId是一样的。

题外话

大家如果想用大量数据测试成果,强烈推荐fakerjs,可以创建大量虚假数据,用于测试虚拟列表。

附上最简单使用

1、下载依赖

npm install --save-dev @faker-js/faker

2、生成数据

import { faker } from '@faker-js/faker'

Array.from({ length: 10000 }).forEach(() => {
      this.list.push(createRandomUser())
})

createRandomUser() {
      return {
        userId: faker.datatype.uuid(),
        username: faker.internet.userName(),
      }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue3的组合式API中使用ref()函数的例子

    Vue3的组合式API中使用ref()函数的例子

    你们是否听说过Vue3的组合式API?它可是Vue3的新玩法,把以前的Vue2组件函数转化为了函数组件。好了,今天我要和大家分享的是如何在组合式API中使用ref()函数,感兴趣的朋友跟随小编一起看看吧
    2023-06-06
  • vue实现在页面上添加水印的示例代码

    vue实现在页面上添加水印的示例代码

    这篇文章主要给大家介绍一下vue实现在页面上添加水印的实例,文中有详细的代码示例供大家参考,具有一定的参考价值,感兴趣的小伙伴跟着小编一起来看看吧
    2023-12-12
  • vite前端构建Turborepo高性能monorepo方案

    vite前端构建Turborepo高性能monorepo方案

    这篇文章主要为大家介绍了vite前端构建Turborepo高性能monorepo方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • vue-route路由管理的安装与配置方法

    vue-route路由管理的安装与配置方法

    这篇文章主要介绍了vue-route路由管理的安装与配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • vue实现的多页面项目如何优化打包的步骤详解

    vue实现的多页面项目如何优化打包的步骤详解

    这篇文章主要介绍了vue实现的多页面项目如何优化打包的步骤详解,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • Vue Steam同款登录验证数字输入框功能

    Vue Steam同款登录验证数字输入框功能

    这篇文章主要介绍了Vue Steam同款登录验证数字输入框功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-03-03
  • Vue router安装及使用方法解析

    Vue router安装及使用方法解析

    这篇文章主要介绍了Vue router安装及使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • vue如何自定义配置运行run命令

    vue如何自定义配置运行run命令

    这篇文章主要介绍了vue如何自定义配置运行run命令,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • element的el-upload组件上传文件跨域问题的几种解决

    element的el-upload组件上传文件跨域问题的几种解决

    跨域问题网上搜索很多,感觉情况都不一样,本文主要介绍了element的el-upload组件上传文件跨域问题的几种解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • vue 纯js监听滚动条到底部的实例讲解

    vue 纯js监听滚动条到底部的实例讲解

    今天小编就为大家分享一篇vue 纯js监听滚动条到底部的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09

最新评论