当前位置:首页 > VUE

vue实现列表组件

2026-03-09 09:50:08VUE

Vue 列表组件实现方法

基础列表渲染

使用 v-for 指令可以轻松实现列表渲染。在模板中遍历数组数据,为每个元素生成对应的 DOM 节点。

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

<script>
export default {
  data() {
    return {
      items: [
        { name: 'Item 1' },
        { name: 'Item 2' },
        { name: 'Item 3' }
      ]
    }
  }
}
</script>

带状态的列表项

为列表项添加交互功能,如点击事件或选中状态。

<template>
  <ul>
    <li 
      v-for="(item, index) in items" 
      :key="index"
      @click="selectItem(index)"
      :class="{ 'active': selectedIndex === index }"
    >
      {{ item.name }}
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      items: [...],
      selectedIndex: null
    }
  },
  methods: {
    selectItem(index) {
      this.selectedIndex = index
    }
  }
}
</script>

可编辑列表

实现列表项的可编辑功能,允许用户修改内容。

<template>
  <ul>
    <li v-for="(item, index) in items" :key="index">
      <input 
        v-if="item.editing"
        v-model="item.name"
        @blur="saveEdit(index)"
      >
      <span v-else @click="editItem(index)">{{ item.name }}</span>
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { name: 'Item 1', editing: false },
        { name: 'Item 2', editing: false },
        { name: 'Item 3', editing: false }
      ]
    }
  },
  methods: {
    editItem(index) {
      this.items[index].editing = true
    },
    saveEdit(index) {
      this.items[index].editing = false
    }
  }
}
</script>

动态加载列表

结合异步请求实现动态数据加载的列表组件。

<template>
  <div>
    <ul v-if="!loading">
      <li v-for="item in items" :key="item.id">
        {{ item.title }}
      </li>
    </ul>
    <div v-else>Loading...</div>
    <button @click="loadMore">Load More</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [],
      loading: false,
      page: 1
    }
  },
  created() {
    this.fetchData()
  },
  methods: {
    async fetchData() {
      this.loading = true
      const response = await fetch(`/api/items?page=${this.page}`)
      const newItems = await response.json()
      this.items = [...this.items, ...newItems]
      this.loading = false
    },
    loadMore() {
      this.page++
      this.fetchData()
    }
  }
}
</script>

可排序列表

实现拖拽排序功能的列表组件。

vue实现列表组件

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

<script>
import Sortable from 'sortablejs'

export default {
  data() {
    return {
      items: [...],
      sortOptions: {
        onEnd: this.updateOrder
      }
    }
  },
  methods: {
    updateOrder(evt) {
      const movedItem = this.items.splice(evt.oldIndex, 1)[0]
      this.items.splice(evt.newIndex, 0, movedItem)
    }
  },
  directives: {
    sortable: {
      inserted(el, binding) {
        new Sortable(el, binding.value)
      }
    }
  }
}
</script>

这些方法涵盖了 Vue 列表组件的基本实现方式,可以根据具体需求进行组合或扩展。

标签: 组件列表
分享给朋友:

相关文章

vue穿梭框组件实现

vue穿梭框组件实现

实现基础穿梭框组件 在Vue中实现穿梭框组件,可以使用<el-transfer>(Element UI)或手动实现。以下是手动实现的核心逻辑: <template> &l…

vue 实现长列表

vue 实现长列表

vue 实现长列表的优化方法 使用虚拟滚动技术,只渲染可视区域内的元素,大幅减少DOM节点数量。通过计算滚动位置动态更新显示内容,降低内存占用和渲染压力。 <template> &l…

uniapp商品列表

uniapp商品列表

商品列表实现方法 在uniapp中实现商品列表功能,可以通过多种方式完成,以下是几种常见的方法: 使用scroll-view组件实现滚动列表 <scroll-view scroll-y="t…

vue实现盖章组件

vue实现盖章组件

实现Vue盖章组件的步骤 组件结构设计 创建一个Vue组件,包含画布元素和必要的控制按钮。画布用于显示盖章效果,按钮用于触发盖章操作。组件需要接收图片和盖章位置等参数。 <template&g…

vue实现树组件

vue实现树组件

Vue 树形组件的实现方法 递归组件实现 使用 Vue 的递归组件特性可以轻松实现树形结构。定义一个组件,该组件能够调用自身来渲染子节点。 <template> <ul>…

vue实现搜索组件

vue实现搜索组件

Vue 实现搜索组件的方法 基础搜索组件实现 创建基础搜索组件需要包含输入框和搜索按钮。在Vue中可以使用v-model绑定输入值,通过@click或@keyup.enter触发搜索。 <te…