当前位置:首页 > VUE

vue公共列表的实现

2026-03-06 17:16:42VUE

实现公共列表的步骤

在Vue中实现公共列表功能,可以通过封装可复用的列表组件来完成。以下是具体实现方法:

创建公共列表组件 创建一个名为CommonList.vue的组件,包含基本的列表展示功能:

<template>
  <div class="common-list">
    <ul>
      <li v-for="(item, index) in listData" :key="index">
        {{ item }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  props: {
    listData: {
      type: Array,
      required: true
    }
  }
}
</script>

使用公共列表组件 在父组件中引入并使用公共列表组件:

<template>
  <div>
    <common-list :listData="items"></common-list>
  </div>
</template>

<script>
import CommonList from './CommonList.vue'

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

增强列表组件功能 为公共列表组件添加更多功能,如自定义渲染、分页等:

<template>
  <div class="common-list">
    <ul>
      <li v-for="(item, index) in listData" :key="index">
        <slot name="item" :item="item" :index="index">
          {{ item }}
        </slot>
      </li>
    </ul>
    <div v-if="pagination" class="pagination">
      <button @click="prevPage">上一页</button>
      <span>当前页: {{ currentPage }}</span>
      <button @click="nextPage">下一页</button>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    listData: {
      type: Array,
      required: true
    },
    pagination: {
      type: Boolean,
      default: false
    },
    pageSize: {
      type: Number,
      default: 10
    }
  },
  data() {
    return {
      currentPage: 1
    }
  },
  computed: {
    paginatedData() {
      if (!this.pagination) return this.listData
      const start = (this.currentPage - 1) * this.pageSize
      const end = start + this.pageSize
      return this.listData.slice(start, end)
    }
  },
  methods: {
    nextPage() {
      if (this.currentPage * this.pageSize < this.listData.length) {
        this.currentPage++
      }
    },
    prevPage() {
      if (this.currentPage > 1) {
        this.currentPage--
      }
    }
  }
}
</script>

使用增强版列表组件 在父组件中使用增强功能的公共列表组件:

<template>
  <div>
    <common-list 
      :listData="items" 
      :pagination="true"
      :pageSize="5"
    >
      <template v-slot:item="{ item, index }">
        <div class="custom-item">
          {{ index + 1 }}. {{ item.name }} - {{ item.price }}
        </div>
      </template>
    </common-list>
  </div>
</template>

<script>
import CommonList from './CommonList.vue'

export default {
  components: {
    CommonList
  },
  data() {
    return {
      items: [
        { name: 'Product A', price: '$10' },
        { name: 'Product B', price: '$20' },
        // 更多数据...
      ]
    }
  }
}
</script>

添加样式 为公共列表组件添加基本样式:

vue公共列表的实现

.common-list ul {
  list-style: none;
  padding: 0;
}

.common-list li {
  padding: 8px 12px;
  border-bottom: 1px solid #eee;
}

.pagination {
  margin-top: 16px;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 16px;
}

通过以上方法,可以创建一个灵活、可复用的公共列表组件,满足不同场景下的列表展示需求。

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

相关文章

vue实现同步

vue实现同步

Vue 实现同步的方法 在 Vue 中实现同步操作通常涉及数据绑定、状态管理和异步操作的处理。以下是几种常见的方法: 使用计算属性(Computed Properties) 计算属性基于响应式依赖进…

vue实现画廊

vue实现画廊

Vue实现画廊的基本方法 使用Vue.js实现画廊功能可以通过多种方式完成,以下是一种常见的实现方案: 安装必要依赖 npm install vue-gallery --save 引入组件并注册…

vue遮罩实现

vue遮罩实现

实现 Vue 遮罩的常见方法 使用 CSS 定位和透明度 创建一个全屏遮罩层,通过 CSS 固定定位覆盖整个视口,并设置半透明背景色。 <template> <div cl…

vue 实现循环

vue 实现循环

Vue 实现循环的方法 在 Vue 中,可以使用 v-for 指令来实现循环渲染列表数据。以下是几种常见的循环实现方式: 基本数组循环 <template> <ul>…

vue日历实现

vue日历实现

实现基础日历布局 使用Vue的模板语法构建日历的基本HTML结构。一个典型的日历包含星期标题和日期格子,可以通过v-for循环生成。月份切换功能通过计算属性动态更新日期数组。 <templat…

vue实现权限

vue实现权限

Vue 实现权限管理的方法 在 Vue 项目中实现权限管理通常涉及路由控制、按钮权限和接口权限。以下是几种常见的实现方式: 路由权限控制 通过动态路由的方式,根据用户权限加载不同的路由配置。可以使用…