当前位置:首页 > VUE

vue公共列表的实现

2026-03-06 17:16:42VUE

实现公共列表的步骤

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

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

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>

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

vue公共列表的实现

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

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

.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中实现收起展开面板功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-show或v-if控制显示隐藏 利用Vue的指令可以轻松实现面板的展开和收起: &l…

vue实现iframe

vue实现iframe

Vue 中实现 iframe 的方法 在 Vue 项目中,可以通过多种方式实现 iframe 的嵌入。以下是几种常见的方法: 使用原生 HTML iframe 标签 直接在 Vue 组件的模板中使用…

vue SSG实现

vue SSG实现

Vue SSG 实现方法 Vue 的静态站点生成(SSG)可以通过多种工具和框架实现,以下是几种常见的方法: 使用 VuePress VuePress 是一个基于 Vue 的静态站点生成器,适合文档…

vue实现曲线

vue实现曲线

Vue 实现曲线的方法 在 Vue 中实现曲线可以通过多种方式,包括使用 SVG、Canvas 或第三方库如 D3.js、ECharts 等。以下是几种常见的方法: 使用 SVG 绘制曲线 SVG…

vue实现ppt

vue实现ppt

Vue 实现 PPT 的功能 Vue 可以结合第三方库或自定义组件实现类似 PPT 的演示效果。以下是几种常见的方法: 使用第三方库 reveal.js reveal.js 是一个流行的演示框架,支…

vue实现筛选

vue实现筛选

实现筛选功能的基本思路 在Vue中实现筛选功能通常需要结合数据绑定、计算属性和方法。筛选的核心逻辑是根据用户输入的条件过滤原始数据列表,并动态更新显示结果。 数据准备 定义一个数组存储原始数据,另一…