vue3+h5实现虚拟列表

news2024/12/22 22:54:23

目录

  • vue3+h5实现虚拟列表
    • component / List.vue
    • component / itemComponent.vue
    • 使用组件
    • 效果

vue3+h5实现虚拟列表

  • 安装:npm i vue3-virtual-scroll-list
  • package.json
  "dependencies": {
    "vue": "^3.2.36",
    "vue3-virtual-scroll-list": "^0.2.1"
  },
  "devDependencies": {
    "vite": "^4.4.6",
    "vite-plugin-mock": "^3.0.0",
    "vite-plugin-style-import": "^2.0.0",
    "vite-plugin-vconsole": "^2.0.0",
  }

component / List.vue

<template>
  <div class="container">
    <vue-virtual-scroll-list
      class="scroll-list"
      style="height: 100%; overflow-y: scroll;"
      :size="list.length"
      :keeps="20"
      :data-key="'id'"
      :data-sources="list"
      :data-component="itemComponent"
      :extra-props="{
        address,
        basisInfo,
      }"
      @tobottom="listToBottom"
    >
    </vue-virtual-scroll-list>
  </div>
</template>

<script>
import { defineComponent, ref } from 'vue';
import VueVirtualScrollList from 'vue3-virtual-scroll-list';
import itemComponent from "./itemComponent.vue"
export default defineComponent({
  components: {
    VueVirtualScrollList,
    
  },
  setup() {
    const list = ref([]);
    const listToBottom = () => {
      console.log('到底了哦');
    }
    const content = ()=> {
      for(let i = 0; i < 100; i++){
        const obj = {id: i, name: `人员${i}`, sex: i % 2 === 0 ? '男' : '女'};
        list.value.push(obj) 
      }
    }
    onMounted(()=>{
      content()
    })
    return {
      list,
      itemComponent,
      address:{ province:'江苏',city:'南京' },
      basisInfo:[{age:20}],
      listToBottom
    };
  },
});
</script>

<style>
.container {
  height: 500px;
}

.scroll-list {
  width: 100%;
}

.list-item {
  height: 50px;
  line-height: 50px;
  border-bottom: 1px solid #ccc;
}
.container ::-webkit-scrollbar {
  width: 0px; /** 设置滚动条的宽度 */
  background-color: transparent;
}

.container ::-webkit-scrollbar-thumb {
  background-color: transparent;
}

.container ::-webkit-scrollbar-track {
  background-color: transparent;
}

.container {
  scrollbar-width: thin;
  scrollbar-color: transparent transparent;
}
</style>

component / itemComponent.vue

<template>
  <div>
    编号:{{ index }} <br/>
    姓名:{{ source.name }}<br/> 
    年龄:{{basisInfo[0].age}}<br/>
    地址:{{address.province}}-{{address.city}} <br />
    <div v-if="source.sex === '男'">
      {{ source.sex }}
    </div>
    <hr/>
  </div>
</template>

<script>
  export default {
    name: 'item-component',
    props: {
      index: { 
        type: Number
      },
      source: { 
        type: Object,
        default () {
          return {}
        }
      },
      address:{
        type: Object,
        default () {
          return {}
        }
      },
      basisInfo:{
        type: Array,
        default () {
          return []
        }  
      }
    },
    mounted(){}
  }
</script>

使用组件

<List></List>

import List from "./component/List.vue"
export default {
  name: "AboutPage",
  components: {
    List
  },
}

效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/783598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7.20 ARM-A7核心三盏LED灯

思维导图 汇编代码&#xff1a; .text .global _start _start: /**********LED1点灯**************/ RCC_INIT_E:ldr r0,0x50000A28ldr r1,[r0]orr r1,r1,#(0x1 << 4)str r1,[r0]RCC_INIT_F:ldr r0,0x50000A28ldr r1,[r0]orr r1,r1,#(0x1 << 5)str r1,[r0]LED_INI…

SAP 后台作业简单介绍 job

主要事务代码&#xff1a;SM36、SM37 作业设置 1. 一般数据&#xff1a;作业名称&#xff0c;优先级&#xff0c;目标服务器 优先级适用于资源受限情况&#xff0c;目标服务器适用于服务器环境依赖的程序&#xff0c;比如操作服务器文件等类似的处理 2. 开始条件&#xff0c;…

LRU页面置换算法(C语言实现)

1、实验目的 &#xff08;1&#xff09;熟悉虚拟存储器页面置换过程&#xff1b; &#xff08;2&#xff09;通过编写和调试页面置换算法的模拟程序以加深对页面置换算法的理解&#xff1b; &#xff08;3&#xff09;掌握LRU算法的原理&#xff1b; &#xff08;4&#xf…

Ubuntu中安装Vivado软件

文章目录 Ubuntu中安装Vivado加载License修改软件运行权限安装下载器驱动运行Vivado软件连接开发板测试驱动交叉编译器 Ubuntu中安装Vivado 跨系统文件复制的设置在文章Ubuntu 的安装及其设置中已经介绍过了。 在Ubuntu中找到一个需要存放Vivado软件安装包的文件夹&#xff0c…

二分图博弈学习笔记

前言&#xff1a;最近每场训练赛都有博弈题&#xff0c;而且我都被薄纱了。。。真烦 二分图博弈是少有的直接跟图论挂钩的一种博弈模型 一个博弈是二分图博弈应当满足一下条件&#xff1a; 博弈人数为两人&#xff0c;轮流操作 博弈状态转移可以表示成一张二分图 不可访问已…

MySQL 的 crash-safe浅谈

MySql执行流程 MySQL作为当下最流行的开源关系型数据库&#xff0c;有一个很关键和基本的能力&#xff0c;就是必须能够保证数据不会丢。那么在这个能力背后&#xff0c;MySQL是如何设计才能保证不管在什么时间崩溃&#xff0c;恢复后都能保证数据不会丢呢&#xff1f;有哪些…

在Win11的WSL子系统Ubuntu上安装Gnome桌面环境

目录 1. 使用 WSL 在 Win11 上安装 Linux 2. 安装Ubuntu 22.04默认Gnome桌面环境 2.1更新Ubuntu 22.04软件包 2.2 安装Ubuntu桌面环境 2.3 重启服务 2.4 重启Ubuntu 22.04系统 2.5 登录Gnome桌面环境 在Win11上安装ubuntu版linux系统并实现默认Gnome桌面环境&#xff08…

MySQL数据库(八)

目录 一、什么是索引 1.1索引的原理 1.2索引的优缺点 二、索引的使用 2.1查看索引 2.2手动创建索引 2.3删除索引 三、MySQL索引底层的数据结构 3.1 B树 3.2 B树 一、什么是索引 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创…

深度理解 Spring AOP

一、什么是AOP(面向切面编程)&#xff1f;&#x1f349; AOP 为 Aspect Oriented Programming 的缩写&#xff0c;意思为面向切面编程&#xff0c;是通过预编译方式 和运行期 动态代理 实现程序功能的统一维护的一种技术。 AOP &#xff08;面向切面编程&#xff09;是 OOP&a…

Jmeter 接口自动化和 Python 接口自动化,到底选哪个?

目录 前言&#xff1a; 背景 Jmeter 接口自动化 特点 Python 接口自动化 特点 谈项目 写在最后 前言&#xff1a; JMeter接口自动化和Python接口自动化都是常见的选择。 背景 很多刚接触接口自动化的朋友都会疑惑&#xff0c;市面上 Jmeter 接口自动化&#xff0c;Py…

题目2 文件上传(保姆级教程)

url&#xff1a;http://192.168.154.253:82/ #打开http://XXX:81/&#xff0c;XXX为靶机的ip地址 审题 1、打开题目看到有一个提示&#xff0c;此题目需要绕过WAF过滤规则&#xff0c;上传木马获取webshell&#xff0c;最后从根目录下key.php文件中获得flag 2、开始答题 第一步…

【数据结构】二叉树详解(3)

⭐️ 前言 ✨ 往期链接&#xff1a;【数据结构】二叉树详解(1) 在第一篇二叉树文章中&#xff0c;我们探讨了二叉树的链式结构定义与实现。二叉的遍历包含( 前序/中序/后序遍历 )及代码实现和递归流程图的详细讲解。还有一些二叉树的其他接口定义与实现&#xff0c;包含 Binar…

基于netlify生成custom SSL certificate

&#xff08;1&#xff09;腾讯云申请 &#xff08;2&#xff09;域名控制台解析 &#xff08;3&#xff09;Nginx下载&#xff08;crt: CA certificate Chain)

C++ 设计模式 ---- 接口隔离模式

“接口隔离”模式 在组件构建过程中&#xff0c;某些接口之间直接的依赖常常会带来很多问题、甚至根本无法实现。采用添加一层间接&#xff08;稳定&#xff09;接口&#xff0c;来隔离本来互相紧密关联的接口是一种常见的解决方案。典型模式&#xff1a;1、Facade2、Proxy3、…

MongoDB原生语句更新嵌套数组的值

一、更新一层嵌套数组 首先执行MongoDB原生语句脚本在user集合中产生一些样本数据,如下所示: db.user.insert({"_id":1,"title":"爱情公寓3","students":[{"student_id":1001,"student_name":"林宛瑜&quo…

Docker介绍及安装使用

Docker介绍及安装使用 一、Docker的概述1、Docker是什么&#xff1f;2、Docker的Logo3、Docker的设计宗旨&#xff08;一次封装&#xff0c;到处运行&#xff09;4、容器化越来越受欢迎的原因 二、Docker与虚拟机的区别三、Docker的使用场景四、Docker的核心概念1、镜像2、容器…

基于linux下的高并发服务器开发(第二章)- 2.25 sigprocmask 函数使用

int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);- 功能&#xff1a;将自定义信号集中的数据设置到内核中&#xff08;设置阻塞&#xff0c;解除阻塞&#xff0c;替换&#xff09;- 参数&#xff1a;- how : 如何对内核阻塞信号集进行处理SIG_BLOCK: 将用户设…

【MySQl】MySQl中的乐观锁是怎么实现的

文章目录 前言一、乐观锁二、如何实现乐观锁呢&#xff0c;一般来说有以下2种方式2.1、使用数据版本&#xff08;Version&#xff09;记录机制实现2.2、乐观锁定的第二种实现方式和第一种差不多 前言 mysql中的乐观锁是怎么实现的&#xff1f;很多新手对此不是很清楚&#xff…

第一次参加【CSDN周赛(考试/编程竞赛)】第65期,应该注意些什么?都考什么题目?要具备什么知识?耗时__,我居然取得了__分的成绩

订阅专栏,学习更多干货知识!! 第一次参加 CSDN里的竞赛(考试),都需要注意些什么?考试都考了什么?要具备什么知识?本文带你了解一下!! 🤾🏿‍♂️目录 🌁一、先来看结果吧(有Bug?)🥕1.1 什么情况!🥕1.2 测评报告🥤1.2.1 选择题🥤1.2.2 编程题🥕1…

Redis持久化:分别启用rdb和aof,并查看是否有对应文件生成

一、rdb 简介&#xff1a;在指定的时间间隔内将内存中的数据集快照写入磁盘&#xff0c; 也就是Snapshot快照&#xff0c;它恢复时是将快照文件直接读到内存里。 1. 进入redis.conf文件中查看配置文件 [rootserver ~]# vim /usr/local/redis-stable/redis.conf 2.把持久化的…