当前位置:首页 > 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实现常见效果的几种典型方法,分为不同场景说明: 数据绑定与响应式更新 使用v-model实现表单双向绑定: <template> <input v-model="…

vue实现bootstrap

vue实现bootstrap

Vue 中集成 Bootstrap 的方法 在 Vue 项目中集成 Bootstrap 可以通过以下方式实现,涵盖样式、组件和交互功能。 安装 Bootstrap 依赖 通过 npm 或 yarn…

vue实现socket

vue实现socket

Vue 中实现 WebSocket 通信 在 Vue 项目中实现 WebSocket 通信可以通过原生 WebSocket API 或第三方库(如 socket.io-client)完成。以下是两种常…

vue实现treeselect

vue实现treeselect

Vue TreeSelect 实现方法 使用 Vue 实现 TreeSelect 组件可以通过以下几种方式完成,包括使用现成的第三方库或自行封装组件。 使用第三方库 推荐使用成熟的第三方 TreeS…

vue实现横滚

vue实现横滚

Vue 实现横滚效果 横滚效果通常指水平滚动内容,常见于轮播图、横向导航栏等场景。以下是几种实现方式: 使用 CSS 和 Vue 结合 通过 CSS 的 overflow-x 和 white-spa…

vue实现eventbus

vue实现eventbus

Vue 中实现 EventBus 在 Vue 中,EventBus 是一种跨组件通信的机制,尤其适用于非父子组件之间的数据传递。以下是实现 EventBus 的几种方法: 方法一:使用 Vue 实例…