当前位置: 首页 > news >正文

uni-app学习笔记九-vue3 v-for指令

v-for 指令基于一个数组来渲染一个列表。v-for 指令的值需要使用 item in items 形式的特殊语法,其中 items 是源数据的数组,而 item 是迭代项的别名

<template><view v-for="(item,index) in 10" :key="index">box模块-{{index+1}}</view><view v-for="item in students" :key="item.id">姓名:{{item.name}} , 年龄:{{item.age}}</view>
</template><script setup>import {ref} from "vue"const students = ref([{"id":1,"name":"Jim","age":10},{"id":2,"name":"Tim","age":11},{"id":3,"name":"Jimy","age":12}])
</script>

小程序上的效果:

与 v-if 类似,可以在 <template> 标签上使用 v-for 来渲染一个包含多个元素的块。例如:

<ul><template v-for="item in items"><li>{{ item.msg }}</li><li class="divider" role="presentation"></li></template>
</ul>

template在编译后不展示,没有破坏<ul><li>结构

v-for 与 v-if

当它们同时存在于一个节点上时,v-if 比 v-for 的优先级更高。这意味着 v-if 的条件将无法访问到 v-for 作用域内定义的变量别名:

<!--这会抛出一个错误,因为属性 todo 此时没有在该实例上定义
-->
<li v-for="todo in todos" v-if="!todo.isComplete">{{ todo.name }}
</li>

在外先包装一层 <template> 再在其上使用 v-for 可以解决这个问题

<template v-for="todo in todos"><li v-if="!todo.isComplete">{{ todo.name }}</li>
</template>

 

注意:同时使用 v-if 和 v-for 是不推荐的,因为这样二者的优先级不明显。

通过 key 管理状态

为了给 Vue 一个提示,以便它可以跟踪每个节点的标识,从而重用和重新排序现有的元素,需要为每个元素对应的块提供一个唯一的 key attribute:

<div v-for="item in items" :key="item.id"><!-- 内容 -->
</div>

当使用 <template v-for> 时,key 应该被放置在这个 <template> 容器上

<template v-for="todo in todos" :key="todo.name"><li>{{ todo.name }}</li>
</template>

注意:key 在这里是一个通过 v-bind 绑定的特殊 attribute。请不要和在 v-for 中使用对象里所提到的对象属性名相混淆。

推荐在任何可行的时候为 v-for 提供一个 key attribute,除非所迭代的 DOM 内容非常简单 (例如:不包含组件或有状态的 DOM 元素),或者想有意采用默认行为来提高性能。

key 绑定的值期望是一个基础类型的值,例如字符串或 number 类型。不要用对象作为 v-for 的 key。

http://www.xdnf.cn/news/583615.html

相关文章:

  • redis Pub/Sub 简介 -16 (PUBLISH、SUBSCRIBE、PSUBSCRIBE)
  • 【C++20新特性】ranges::sort()使用方法,优势,注意点
  • 【1004. 最大连续1的个数 III】
  • ai之pdf解析工具 PPStructure 还是PaddleOCR
  • 火山引擎火山云带宽价格
  • 【工作流】Fastgpt配置豆包模型-火山引擎
  • Github 2025-05-22Go开源项目日报 Top10
  • 【COMPUTEX 2025观察】NVIDIA开放NVLink:一场重构AI算力版图的“阳谋“
  • Go File多终端数据同步技术全解:跨设备数据管理实战指南与复杂场景处理过程
  • PostgreSQL14 +patroni+etcd+haproxy+keepalived 集群部署指南
  • C#在 .NET 9.0 中启用二进制序列化:配置、风险与替代方案
  • 模型剪枝的定义与核心作用
  • 硬件开发复盘实战指南
  • CTF签到题
  • 自制操作系统day8 (鼠标数据取得、通往32位模式之路、A20GATE、切换到保护模式、控制寄存器cr0-cr4以及cr8、ALIGNB)
  • 基于 AMDXCVU47P HBM2 FPGA 的 2 路 100G 光纤 PCIe 高性能计算加速卡
  • LabVIEW多通道液位监控
  • 框架开发与原生开发的权衡:React案例分析(原生JavaScript)
  • 【hadoop】Spark的安装部署
  • jvm安全点(五)openjdk17 c++源码垃圾回收之安全点阻塞状态线程在安全点同步中无需调用block函数的详细流程解析
  • Vue:axios(GET请求)
  • 【VLNs篇】04:SayNav-为新环境中的动态规划到导航进行大型语言模型的基础构建
  • 批量处理合并拆分pdf功能 OCR 准确率高 免费开源
  • 华为昇腾开发——多模型资源管理(C++)
  • Apollo10.0学习——planning模块(9)之参数详解二
  • WooCommerce缓存教程 – 如何防止缓存破坏你的WooCommerce网站?
  • 7.2.顺序查找
  • 黑马点评前端Nginx启动失败问题解决记录
  • day26- 系统编程之 文件IO(II) 及 文件属性
  • 数据结构:绪论之时间复杂度与空间复杂度