vue3列表渲染

举报
林欣 发表于 2025/03/14 10:40:22 2025/03/14
【摘要】 在 Vue 3 中,列表渲染是一种根据数组或对象的数据动态生成一组元素的技术。Vue 提供了 v-for 指令来实现列表渲染。以下是关于 Vue 3 中列表渲染的详细解释: 1. 使用 v-for 渲染列表基本用法:v-for 指令用于遍历数组或对象,并生成一个元素列表。<template> <ul> <li v-for="item in items" :key="item.id">...

在 Vue 3 中,列表渲染是一种根据数组或对象的数据动态生成一组元素的技术。Vue 提供了 v-for 指令来实现列表渲染。以下是关于 Vue 3 中列表渲染的详细解释:

1. 使用 v-for 渲染列表

  • 基本用法v-for 指令用于遍历数组或对象,并生成一个元素列表。

    <template>
      <ul>
        <li v-for="item in items" :key="item.id">{{ item.name }}</li>
      </ul>
    </template>
    
    <script>
    export default {
      data() {
        return {
          items: [
            { id: 1, name: 'Item 1' },
            { id: 2, name: 'Item 2' },
            { id: 3, name: 'Item 3' }
          ]
        };
      }
    };
    </script>
    
  • key 属性:在使用 v-for 时,建议为每个生成的元素指定一个唯一的 keykey 用于帮助 Vue 识别哪些元素被改变、被添加或被移除,以优化渲染性能。

2. 遍历对象

  • 对象遍历:可以使用 v-for 遍历对象的属性。

    <template>
      <ul>
        <li v-for="(value, key) in object" :key="key">{{ key }}: {{ value }}</li>
      </ul>
    </template>
    
    <script>
    export default {
      data() {
        return {
          object: {
            name: 'John',
            age: 30,
            occupation: 'Developer'
          }
        };
      }
    };
    </script>
    

3. 使用 v-for 的高级用法

  • 访问索引:在遍历数组时,可以通过第二个参数访问当前项的索引。

    <template>
      <ul>
        <li v-for="(item, index) in items" :key="item.id">
          {{ index }}: {{ item.name }}
        </li>
      </ul>
    </template>
    
  • 遍历范围:可以使用整数直接生成一个特定范围的列表。

    <template>
      <ul>
        <li v-for="n in 5" :key="n">Number {{ n }}</li>
      </ul>
    </template>
    

4. 列表的复杂用法

  • 嵌套循环:在需要渲染嵌套列表时,可以在一个 v-for 内嵌套另一个 v-for

    <template>
      <div>
        <div v-for="category in categories" :key="category.id">
          <h3>{{ category.name }}</h3>
          <ul>
            <li v-for="item in category.items" :key="item.id">{{ item.name }}</li>
          </ul>
        </div>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          categories: [
            { id: 1, name: 'Category 1', items: [{ id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }] },
            { id: 2, name: 'Category 2', items: [{ id: 3, name: 'Item 3' }] }
          ]
        };
      }
    };
    </script>
    

5. 使用组合 API 进行列表渲染

  • 结合 refcomputed:在组合 API 中,可以使用 refcomputed 来管理和计算列表数据。

    <template>
      <ul>
        <li v-for="item in items" :key="item.id">{{ item.name }}</li>
      </ul>
    </template>
    
    <script>
    import { ref, computed } from 'vue';
    
    export default {
      setup() {
        const rawItems = ref([
          { id: 1, name: 'Item 1' },
          { id: 2, name: 'Item 2' },
          { id: 3, name: 'Item 3' }
        ]);
    
        const items = computed(() => rawItems.value.filter(item => item.name.startsWith('Item')));
    
        return {
          items
        };
      }
    };
    </script>
    

6. 维护和更新列表

  • 响应性:Vue 的响应式系统会自动检测数组的变化并更新 DOM。因此,直接修改数组(如添加、删除元素)会自动反映在视图上。

    methods: {
      addItem() {
        this.items.push({ id: this.items.length + 1, name: `Item ${this.items.length + 1}` });
      },
      removeItem(index) {
        this.items.splice(index, 1);
      }
    }
    

7. 列表渲染的注意事项

  • key 的重要性:确保每个列表项都有一个唯一的 key,以便 Vue 能够高效地更新和渲染列表。
  • 避免直接使用索引作为 key:在列表项可能改变位置或顺序时,避免直接使用索引作为 key,因为这可能导致渲染错误。

总结

  • v-for 指令:用于遍历数组或对象,生成元素列表。
  • key 属性:用于优化渲染性能,确保每个元素唯一。
  • 高级用法:支持访问索引、遍历范围以及嵌套循环。
  • 组合 API:结合 refcomputed,在 setup 函数中实现更灵活的列表渲染。
  • 响应性:Vue 的响应式系统会自动更新列表变化。

通过这些功能,Vue 3 提供了强大且灵活的列表渲染功能,帮助开发者根据数据动态地生成和管理内容。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。