当前位置:首页 > 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 中实现缩放功能可以通过多种方式完成,以下是一些常见的方法: 使用 CSS transform 属性 通过 CSS 的 transform: scale() 属性可…

vue 实现直播

vue 实现直播

Vue 实现直播的基本方法 在Vue中实现直播功能,通常需要结合WebRTC、RTMP或HLS等技术。以下是几种常见的实现方式: 使用WebRTC实现实时直播 WebRTC适合低延迟的实时直播场景,…

vue评分实现

vue评分实现

Vue 评分组件实现方法 使用第三方库(如 Element UI) 安装 Element UI: npm install element-ui 引入并注册组件: import Vue from '…

vue实现token

vue实现token

Vue 中实现 Token 认证的方法 在 Vue 中实现 Token 认证通常涉及前端与后端的交互,包括 Token 的获取、存储、发送和刷新等操作。以下是具体实现步骤: 获取 Token 用户登…

分页实现vue

分页实现vue

分页实现(Vue) 在Vue中实现分页功能通常需要结合前端分页逻辑和后端API支持。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,直接在客户端完成分页逻辑。 <templ…

vue实现海报

vue实现海报

Vue 实现海报生成方案 使用 html2canvas 库 html2canvas 是一个将 HTML 元素转换为 Canvas 的库,适合将 Vue 组件渲染为海报图片 安装依赖: npm in…