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

带状态的列表项

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

vue实现列表组件

<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>

可编辑列表

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

vue实现列表组件

<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>

可排序列表

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

<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 列表组件的基本实现方式,可以根据具体需求进行组合或扩展。

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

相关文章

elementui组件

elementui组件

ElementUI 组件概述 ElementUI 是一套基于 Vue.js 的桌面端组件库,提供丰富的 UI 组件,适用于快速开发中后台系统。以下是其核心组件分类及典型用法。 基础组件 Button…

vue实现列表

vue实现列表

实现列表的基本方法 在Vue中实现列表通常使用v-for指令,这是Vue的核心功能之一。v-for可以遍历数组或对象,为每个元素生成对应的DOM节点。 <template> <…

vue轮播组件实现

vue轮播组件实现

vue轮播组件实现方法 使用第三方库(如Swiper) 安装Swiper库: npm install swiper 在Vue组件中引入: <template> <div cl…

uniapp 滑动组件

uniapp 滑动组件

uniapp 滑动组件实现方法 使用swiper组件 uniapp内置的swiper组件可以实现滑动效果,适用于轮播图或页面切换场景。 示例代码: <swiper :indicator-d…

如何判断react组件

如何判断react组件

判断 React 组件的依据 React 组件的判断通常基于其定义方式、功能特性和代码结构。以下是几种常见的判断方法: 函数组件与类组件 函数组件是通过 JavaScript 函数定义的,接收 pr…

uniapp 内容列表

uniapp 内容列表

uniapp 内容列表的实现方法 在uniapp中实现内容列表通常需要结合组件和数据绑定。以下是一个常见的方法: 模板部分 <template> <view class="c…