当前位置:首页 > VUE

vue实现列表demo

2026-02-19 02:18:05VUE

Vue 列表实现基础示例

以下是一个基于 Vue 3 的列表渲染基础实现方案,包含常见功能如数据绑定、事件处理和动态样式。

模板部分

<template>
  <div>
    <h3>商品列表</h3>
    <ul>
      <li v-for="(item, index) in items" 
          :key="item.id"
          :class="{ 'active': item.isActive }"
          @click="toggleActive(index)">
        {{ item.name }} - ¥{{ item.price }}
      </li>
    </ul>
  </div>
</template>

脚本部分

<script>
import { ref } from 'vue'

export default {
  setup() {
    const items = ref([
      { id: 1, name: '笔记本电脑', price: 5999, isActive: false },
      { id: 2, name: '智能手机', price: 3999, isActive: false },
      { id: 3, name: '无线耳机', price: 699, isActive: false }
    ])

    const toggleActive = (index) => {
      items.value[index].isActive = !items.value[index].isActive
    }

    return { items, toggleActive }
  }
}
</script>

样式部分

<style scoped>
.active {
  background-color: #f0f0f0;
  font-weight: bold;
}
ul {
  list-style: none;
  padding: 0;
}
li {
  padding: 8px 12px;
  border-bottom: 1px solid #eee;
  cursor: pointer;
}
</style>

进阶功能实现方案

带筛选功能的列表

vue实现列表demo

const searchQuery = ref('')
const filteredItems = computed(() => {
  return items.value.filter(item => 
    item.name.toLowerCase().includes(searchQuery.value.toLowerCase())
  )
})

分页控制实现

const currentPage = ref(1)
const itemsPerPage = 5

const paginatedItems = computed(() => {
  const start = (currentPage.value - 1) * itemsPerPage
  return filteredItems.value.slice(start, start + itemsPerPage)
})

性能优化建议

使用 v-for 时始终指定唯一的 :key 属性,推荐使用 ID 而非索引

大数据量场景考虑使用虚拟滚动技术,可借助第三方库如 vue-virtual-scroller

vue实现列表demo

复杂列表操作建议使用 Vuex 或 Pinia 进行状态管理

常见问题解决方案

列表更新不渲染时,确保使用响应式 API(ref/reactive)声明数据源

动态添加列表项时,避免直接修改数组,使用数组变更方法或解构赋值

// 正确方式
items.value = [...items.value, newItem]
// 或
items.value.push(newItem)

跨组件传递列表数据时,优先使用 props/emit 或 provide/inject

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

相关文章

vue实现查询替换

vue实现查询替换

Vue 实现查询替换功能 在 Vue 中实现查询替换功能,可以通过数据绑定和字符串操作方法结合实现。以下是具体实现方式: 基础实现 <template> <div>…

vue实现剪辑

vue实现剪辑

Vue 实现视频剪辑功能 在Vue中实现视频剪辑功能通常需要结合HTML5的<video>元素和第三方库(如FFmpeg.js或Video.js)。以下是几种常见的实现方法: 使用FFm…

vue下载实现

vue下载实现

Vue 下载实现方法 在 Vue 项目中实现文件下载功能可以通过多种方式完成,以下是几种常见的方法: 使用 <a> 标签实现下载 通过动态创建 <a> 标签并设置 href…

vue实现回复

vue实现回复

Vue 实现回复功能 在 Vue 中实现回复功能通常涉及前端表单交互、数据绑定和后端通信。以下是实现回复功能的详细步骤: 数据绑定与表单设计 使用 Vue 的 v-model 绑定回复框的输入内容,…

vue列表查询实现

vue列表查询实现

实现 Vue 列表查询功能 基础列表渲染 在 Vue 中可以通过 v-for 指令实现列表渲染,结合计算属性动态过滤数据: <template> <div> &l…

vue实现产品搜索

vue实现产品搜索

实现产品搜索功能 在Vue中实现产品搜索功能需要结合前端界面和后端数据处理。以下是实现的基本思路和代码示例: 数据准备 创建一个产品数据数组,包含需要搜索的产品信息: data() { ret…