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

VUE组件学习 | 五、v-for组件

v-for 指令基础知识

v-for 是 Vue.js 中的一个指令,用于基于源数据多次渲染元素或模板块。它类似于 JavaScript 中的 for 循环。

基本语法

<template>
  <div>
    <!-- 基本列表渲染 -->
    <ul>
      <li v-for="item in items" :key="item.id">
        {{ item.text }}
      </li>
    </ul>

    <!-- 使用 `(item, index)` 形式 -->
    <ul>
      <li v-for="(item, index) in items" :key="item.id">
        {{ index }}: {{ item.text }}
      </li>
    </ul>

    <!-- 使用 `object` 形式 -->
    <ul>
      <li v-for="(value, key, index) in object" :key="key">
        {{ index }}. {{ key }}: {{ value }}
      </li>
    </ul>

    <!-- 使用 `v-for` 在 `v-for` 中 -->
    <template v-for="item in items">
      <div v-for="(subItem, subIndex) in item.subItems" :key="subIndex">
        {{ item.text }} - {{ subItem.text }}
      </div>
    </template>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, text: 'Item 1' },
        { id: 2, text: 'Item 2' },
        { id: 3, text: 'Item 3' },
      ],
      object: {
        firstName: 'John',
        lastName: 'Doe',
      },
    };
  },
};
</script>

重要注意事项

  1. key 属性:在使用 v-for 时,必须为每个循环的元素提供一个唯一 key 属性。这有助于 Vue.js 跟踪每个节点的身份,从而优化 DOM 更新过程。

  2. 性能:虽然 v-for 很方便,但过度使用或在大量数据上使用可能会导致性能问题。在这种情况下,考虑使用 v-ifv-show 来控制渲染,或者使用虚拟滚动等技术。

  3. 数组更新检测:Vue.js 可以检测数组的变化(如添加、删除、排序)并相应地更新 DOM。但是,它不能检测以下数组的变动:

    • 当你直接设置一个项的索引时,例如:vm.items[indexOfItem] = newValue
    • 当你修改数组的长度时,例如:vm.items.length = newLength

    在这些情况下,可以使用 Vue.setvm.$set 方法来更新数组项,或者使用 splice 方法来修改数组。

  4. 对象的 v-for:当使用对象进行 v-for 时,你可以访问到每个属性的值、键和索引。但是,Vue 不能检测到对象属性的添加或删除。如果需要响应这些变化,可以考虑使用数组来存储键值对。

结论

v-for 是 Vue.js 中一个强大的指令,允许你基于数据动态渲染 DOM。正确使用它可以提高应用的性能和用户体验。始终记得为每个循环的元素提供唯一的 key 属性,并注意数组和对象的更新检测限制。


http://www.kler.cn/a/369923.html

相关文章:

  • nginx分发请求超时切换服务
  • 数据结构——实验一·线性表
  • github登录用的TOTP和恢复码都丢失了怎么办
  • 2025.1.20——二、buuctf BUU UPLOAD COURSE 1 1 文件上传
  • Tensor 基本操作1 unsqueeze, squeeze, softmax | PyTorch 深度学习实战
  • MTK MT6890:LCD ST7789P3驱动移植调试
  • 明达云平台:赋能污水处理厂
  • STM32中的IPR,IRQ,NVCC ,EXTI,AFIO 都是什么意思?
  • elselect iphone上 要点两次
  • ES(2)(仅供自己参考)
  • rand5生成rand7
  • leetcode hot100【LeetCode 394.字符串解码】java实现
  • Shein注册不了的常见原因及解决方法
  • Java知识巩固(十二)
  • 蚁群算法(Ant Colony Optimization)详细解读
  • Flink系列之:学习理解通过状态快照实现容错
  • matlab 绘图操作
  • Rust教程
  • 初探Servlet
  • picomax的rkipc开启rtmp功能
  • Python 基础语法 - 变量
  • 快速学会C 语言基本概念和语法结构
  • 电脑技巧:如何进行磁盘测速?
  • 模型 五遍沟通法(企业管理)
  • 【Gaussian Grouping: Segment and Edit Anything in 3D Scenes】阅读笔记
  • Java最全面试题->数据库/中间件->KafKa面试题