当前位置:首页 > VUE

vue列表怎么实现

2026-03-29 07:22:58VUE

基础列表渲染

在 Vue 中,通过 v-for 指令实现列表渲染。语法为 v-for="item in items",其中 items 是数据源数组,item 是当前遍历的元素。

<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: 'Apple' },
        { id: 2, name: 'Banana' }
      ]
    };
  }
};
</script>

带索引的列表

需要索引时,语法为 v-for="(item, index) in items"index 表示当前项的索引。

<template>
  <ul>
    <li v-for="(item, index) in items" :key="item.id">
      {{ index + 1 }}. {{ item.name }}
    </li>
  </ul>
</template>

遍历对象

v-for 也可遍历对象的属性,语法为 v-for="(value, key) in object"

vue列表怎么实现

<template>
  <ul>
    <li v-for="(value, key) in user" :key="key">
      {{ key }}: {{ value }}
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      user: { name: 'Alice', age: 25 }
    };
  }
};
</script>

动态绑定 key

为提升性能,必须为每项绑定唯一 key(通常用 id),避免复用 DOM 节点导致的渲染问题。

<li v-for="item in items" :key="item.id">
  {{ item.name }}
</li>

列表更新检测

Vue 能检测数组变更方法(如 push()pop()),但直接通过索引修改项或修改数组长度时,需使用 Vue.setthis.$set 触发响应式更新。

vue列表怎么实现

// 正确方式
this.$set(this.items, 0, { id: 1, name: 'New Item' });

// 错误方式(不会触发视图更新)
this.items[0] = { id: 1, name: 'New Item' };

过滤或排序列表

通过计算属性返回处理后的列表,避免直接修改原始数据。

<template>
  <ul>
    <li v-for="item in filteredItems" :key="item.id">
      {{ item.name }}
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Apple', stock: 10 },
        { id: 2, name: 'Banana', stock: 0 }
      ]
    };
  },
  computed: {
    filteredItems() {
      return this.items.filter(item => item.stock > 0);
    }
  }
};
</script>

性能优化

长列表可使用虚拟滚动库(如 vue-virtual-scroller)减少 DOM 节点数量,提升渲染性能。

<template>
  <RecycleScroller
    class="scroller"
    :items="items"
    :item-size="50"
    key-field="id"
  >
    <template #default="{ item }">
      <div>{{ item.name }}</div>
    </template>
  </RecycleScroller>
</template>

标签: 列表vue
分享给朋友:

相关文章

vue无限菜单怎么实现

vue无限菜单怎么实现

实现 Vue 无限菜单的方法 递归组件实现嵌套菜单 使用 Vue 的递归组件特性可以轻松实现无限级嵌套菜单。通过组件调用自身的方式处理嵌套数据。 <template> <ul&…

vue 实现弹幕

vue 实现弹幕

vue 实现弹幕的方法 使用 CSS 动画和动态渲染 在 Vue 中实现弹幕效果,可以通过动态渲染弹幕元素并结合 CSS 动画实现。以下是具体步骤: 数据准备 创建一个数组存储弹幕数据,每条弹幕包…

vue实现cs

vue实现cs

Vue 实现 CS(Client-Side)渲染的常见方法 Vue.js 是一个用于构建用户界面的渐进式框架,默认采用客户端渲染(CSR)。以下是几种常见的实现方式: 使用 Vue CLI 创建项目…

vue 实现fadeout

vue 实现fadeout

Vue 实现淡出效果 在 Vue 中实现淡出(fade-out)效果可以通过 CSS 过渡或动画结合 Vue 的动态渲染功能完成。以下是几种常见方法: 使用 Vue 过渡(Transition)组件…

vue实现pc

vue实现pc

Vue 实现 PC 端应用开发 Vue.js 是一个流行的前端框架,适用于构建 PC 端 Web 应用。以下是关键步骤和最佳实践: 项目初始化 使用 Vue CLI 或 Vite 创建项目:…

vue 实现上传

vue 实现上传

Vue 实现文件上传 使用 Vue 实现文件上传可以通过原生 HTML 的 <input type="file"> 或第三方库(如 axios、vue-upload-component)完…