Vue列表渲染:从基础到性能优化全解析
1. Vue列表渲染基础概念列表渲染是Vue.js中最常用的功能之一它允许我们基于数据数组动态生成DOM元素。在实际项目中几乎每个页面都会用到列表渲染来展示数据集合。1.1 v-for指令核心语法v-for指令的基本语法格式为item in items其中items是源数据数组item是当前遍历项的别名const items ref([ { id: 1, name: 商品A }, { id: 2, name: 商品B } ])ul li v-foritem in items :keyitem.id {{ item.name }} /li /ul关键提示在Vue 3的Composition API中我们需要使用ref或reactive来声明响应式数据而在Options API中则直接在data()中返回普通对象。1.2 索引参数的使用v-for支持第二个可选参数index表示当前项在数组中的位置li v-for(item, index) in items {{ index 1 }}. {{ item.name }} /li在实际开发中index常用于显示序号作为临时性的key不推荐长期使用配合数组方法操作特定位置元素2. 列表渲染进阶技巧2.1 对象遍历渲染v-for不仅可以遍历数组还可以遍历对象属性const userInfo reactive({ name: 张三, age: 28, job: 前端工程师 })ul li v-for(value, key) in userInfo {{ key }}: {{ value }} /li /ul对象遍历时参数顺序为属性值(value)属性名(key)索引(index)2.2 范围值渲染v-for可以直接接受整数用于重复渲染模板span v-forn in 5{{ n }}/span这种用法常见于星级评分组件分页页码显示简单重复元素生成3. 性能优化与最佳实践3.1 key属性的重要性key是Vue识别节点身份的唯一标识正确使用key可以提高列表更新效率维持组件状态避免不必要的DOM操作template v-foritem in items :keyitem.id ListItem :itemitem / /template常见错误使用index作为key这在列表顺序可能变化时会导致问题。理想情况下应该使用数据中的唯一标识字段。3.2 避免v-for与v-if混用直接在同一元素上使用v-for和v-if会导致性能问题!-- 不推荐 -- li v-foritem in items v-if!item.completed {{ item.text }} /li正确做法是使用计算属性过滤数据在外层template使用v-for内层使用v-ifconst activeItems computed(() items.value.filter(item !item.completed))4. 组件中的列表渲染4.1 组件列表渲染基础在组件上使用v-for时需要通过props显式传递数据TodoItem v-for(todo, index) in todos :keytodo.id :todotodo :indexindex deleteremoveTodo /4.2 性能优化技巧对于大型列表可以采用以下优化方案虚拟滚动(vue-virtual-scroller)分页加载懒加载(Intersection Observer)减少响应式数据量// 使用shallowRef减少响应式开销 const largeList shallowRef([...])5. 常见问题与解决方案5.1 数组更新检测问题Vue无法检测到以下数组变动直接通过索引设置项items[0] newValue修改数组长度items.length 0解决方案// 使用Vue.set或数组方法 items.value.splice(0, 1, newValue)5.2 过滤/排序列表避免在模板中直接过滤/排序应该使用计算属性使用方法返回新数组服务端预处理数据const sortedItems computed(() { return [...items.value].sort((a, b) a.sortKey - b.sortKey) })6. 实战案例商品列表实现6.1 基础列表实现const products ref([ { id: 1, name: 手机, price: 2999, stock: 10 }, { id: 2, name: 笔记本, price: 5999, stock: 5 } ])div classproduct-list div v-forproduct in products :keyproduct.id classproduct-item h3{{ product.name }}/h3 p价格¥{{ product.price }}/p p库存{{ product.stock }}件/p /div /div6.2 添加分页功能const pagination reactive({ currentPage: 1, pageSize: 5, total: 0 }) const pagedProducts computed(() { const start (pagination.currentPage - 1) * pagination.pageSize return products.value.slice(start, start pagination.pageSize) })7. 高级应用场景7.1 嵌套列表渲染处理多级分类数据const categories ref([ { id: 1, name: 电子产品, children: [ { id: 101, name: 手机 }, { id: 102, name: 电脑 } ] } ])ul li v-forcategory in categories :keycategory.id {{ category.name }} ul li v-forsub in category.children :keysub.id {{ sub.name }} /li /ul /li /ul7.2 拖拽排序实现使用v-for配合拖拽库实现排序import { useDraggable } from vueuse/core const { list } useDraggable(products)draggable v-modellist item-keyid template #item{ element } div classitem {{ element.name }} /div /template /draggable8. 性能监控与调试8.1 列表渲染性能检测使用Vue DevTools可以检查不必要的重新渲染分析组件更新原因测量渲染时间import { onRenderTracked } from vue onRenderTracked((event) { console.log(渲染追踪, event) })8.2 常见性能问题排查列表滚动卡顿考虑虚拟滚动更新延迟检查大数据量的响应式开销内存泄漏确保组件销毁时清理事件// 大数据量优化示例 const chunkedData computed(() { return _.chunk(rawData.value, 100) // 分批处理 })列表渲染是Vue开发中最基础也是最重要的功能之一。掌握好v-for的各种用法和优化技巧可以显著提升应用性能和开发效率。在实际项目中我通常会先考虑数据结构设计再选择合适的渲染方式最后进行性能优化。记住过早优化是万恶之源但合理的架构设计可以避免后期的性能陷阱。

相关新闻

数学公理体系大全:第十五章 泛代数与等式逻辑:代数结构的公理化之巅

数学公理体系大全:第十五章 泛代数与等式逻辑:代数结构的公理化之巅

第十五章 泛代数与等式逻辑:代数结构的公理化之巅 引言:从具体到抽象,再从抽象到元抽象 前四章我们逐一建构了群、环、向量空间与模的公理体系。尽管这些结构差异显著——群仅有一种运算,环有两种,模涉及外部标量——但…

2026/7/27 22:51:11 阅读更多 →
数学公理体系大全:第十七章 希尔伯特平面几何公理全貌

数学公理体系大全:第十七章 希尔伯特平面几何公理全貌

第十七章 希尔伯特平面几何公理全貌 引言:重建几何的逻辑圣殿 第十六章我们细致解剖了欧几里得《几何原本》的逻辑缺陷:关联关系语焉不详,“介于”概念完全缺失,合同判定依赖非法的“重合”操作,连续性假设隐而不宣。两…

2026/7/28 4:54:34 阅读更多 →
MIPI DSI协议中ForceTxStopMode与TurnRequest状态机详解与配置实践

MIPI DSI协议中ForceTxStopMode与TurnRequest状态机详解与配置实践

1. 项目概述:DSI协议中的关键状态机与定时器在嵌入式显示系统的开发中,MIPI DSI协议是连接应用处理器与显示面板的“高速公路”。作为一名长期与各种显示驱动打交道的工程师,我深知协议栈的稳定性和可靠性是整个显示系统的基石。DSI协议不仅仅…

2026/7/28 7:05:39 阅读更多 →

最新新闻

计算机毕业设计之洗澡啦小程序

计算机毕业设计之洗澡啦小程序

由于移动应用技术的持续性的快速发展,现实生活中人们大多数都是通过移动手机、电脑等智能设备来完成生活中的事务。因此,许多的人工传统行业也开始与互联网结合,不再一味的依靠人工手动,努力打造半自动数字化甚至是全自动数字化模…

2026/7/28 18:56:20 阅读更多 →
记一次 .NET 某人力资源网 CPU爆高分析

记一次 .NET 某人力资源网 CPU爆高分析

记一次 .NET 某人力资源网 CPU爆高分析 在软件开发中,CPU爆高是常见的性能问题之一,尤其在处理高并发请求或资源管理不当时更容易发生。本文将以一个实际案例——某人力资源网的CPU爆高分析——为切入点,从基础概念讲到高级用法,帮…

2026/7/28 18:56:20 阅读更多 →
流式语音合成技术:低延迟TTS在实时交互中的应用

流式语音合成技术:低延迟TTS在实时交互中的应用

1. 项目概述:当语音合成遇上流式处理 上周在部署一个智能客服系统时,客户突然提出要支持实时语音交互,要求延迟必须控制在300ms以内。这让我想起了去年测试过的十几个TTS引擎,不是延迟太高就是音质塑料感严重。直到遇到FireRedTTS…

2026/7/28 18:56:20 阅读更多 →
leetcode-63-dp经典算法题笔记

leetcode-63-dp经典算法题笔记

此题和leetcode 62题状态转移方程是一样的,但是迁入了障碍物的概念,如果需要知道状态转移方程的思路,可以参考https://blog.csdn.net/qq_41936805/article/details/100179828 解出此题,我们必须知道对于障碍物的特点如下&#xf…

2026/7/28 18:56:20 阅读更多 →
渐开线齿轮接触应力与弯曲强度计算全解析

渐开线齿轮接触应力与弯曲强度计算全解析

1. 圆柱渐开线齿轮计算解析之三齿轮传动作为机械设计中最基础也最关键的部件之一,其精度直接影响着整个传动系统的性能。在之前的文章中我们已经探讨了渐开线齿轮的基本原理和几何参数计算,这次我们将深入解析齿轮啮合过程中的接触应力计算与强度校核方法…

2026/7/28 18:56:19 阅读更多 →
汽车状态分类器代码详解(未完待续)

汽车状态分类器代码详解(未完待续)

先是data_processing文件: import pandas as pd from urllib.request import urlretrievedef load_data(downloadTrue):# download data from : http://archive.ics.uci.edu/ml/datasets/CarEvaluationif download:data_path, _ urlretrieve("http://archive.…

2026/7/28 18:55:19 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻