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

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.lryc.cn/news/2383942.html

相关文章:

  • MAC电脑中右键后复制和拷贝的区别
  • Regmap子系统之六轴传感器驱动-编写icm20607.c驱动
  • 常见高危端口解析:网络安全中的“危险入口”
  • 华为2025年校招笔试手撕真题教程(二)
  • 征程 6 J6E/M linear 双int16量化支持替代方案
  • 深度学习模块缝合拼接方法套路+即插即用模块分享
  • 改写视频生产流程!快手SketchVideo开源:通过线稿精准控制动态分镜的AI视频生成方案
  • Graphics——基于.NET 的 CAD 图形预览技术研究与实现——CAD c#二次开发
  • ElasticSearch 8.x 快速上手并了解核心概念
  • AI神经网络降噪 vs 传统单/双麦克风降噪的核心优势对比
  • 04-Web后端基础(基础知识)
  • Spring Cloud生态与技术选型指南:如何构建高可用的微服务系统?
  • 手写简单的tomcat
  • 高等数学-积分
  • IOS平台Unity3D AOT全局模块结构分析
  • Vue 3.0中自定义指令
  • 在 语义分割 和 图像分类 任务中,image、label 和 output 的形状会有所不同。
  • C++面试4-sizeof解析
  • CyberSecAsia专访CertiK首席安全官:区块链行业亟需“安全优先”开发范式
  • uniapp如何设置uni.request可变请求ip地址
  • 文件操作和IO-3 文件内容的读写
  • 架构的设计
  • SpringAI 大模型应用开发篇-SpringAI 项目的新手入门知识
  • 编程速递-RAD Studio 12.3 Athens五月补丁:May Patch Available
  • Vue3实现轮播表(表格滚动)
  • Python爬虫(33)Python爬虫高阶:动态页面破解与验证码OCR识别全流程实战
  • Matlab学习合集
  • 基于labview的声音采集与存储分析系统
  • 【项目记录】部门增删改及日志技术
  • TDengine 更多安全策略