当前位置:首页 > 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>

进阶功能实现方案

带筛选功能的列表

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

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

常见问题解决方案

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

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

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

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

vue实现列表demo

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

相关文章

vue实现导航栏切图

vue实现导航栏切图

Vue 实现导航栏切图 使用 Vue Router 实现基础导航 在 Vue 项目中,可以通过 Vue Router 实现导航栏的路由切换。创建一个导航栏组件,并在其中使用 <router-li…

vue 实现toast

vue 实现toast

vue 实现 toast 的方法 在 Vue 中实现 Toast 提示功能可以通过多种方式,以下是几种常见的实现方法: 使用第三方库 Vue 生态中有许多成熟的 Toast 库,例如 vue-toa…

vue computed 实现

vue computed 实现

computed 的基本用法 在 Vue 中,computed 用于声明计算属性,这些属性基于响应式依赖进行缓存。只有当依赖发生变化时,计算属性才会重新计算。 new Vue({ data:…

vue实现jqueryui

vue实现jqueryui

Vue 实现 jQuery UI 功能 在 Vue 项目中实现类似 jQuery UI 的功能,可以通过原生 Vue 组件或第三方库来实现。以下是几种常见 jQuery UI 功能的 Vue 替代方案…

简单实现vue

简单实现vue

Vue 的基本实现 创建一个简单的 Vue 应用需要引入 Vue 库,并编写基本的模板和数据绑定逻辑。 <!DOCTYPE html> <html lang="en"> &l…

vue vnode实现

vue vnode实现

Vue VNode 实现原理 VNode(Virtual Node)是 Vue 的核心概念之一,用于描述真实 DOM 的轻量级虚拟表示。VNode 的实现涉及以下关键点: VNode 的基本结构…