当前位置:首页 > VUE

vue实现产品列表

2026-02-18 16:09:23VUE

实现产品列表的Vue方案

基础结构搭建

使用Vue CLI或Vite创建项目后,在组件目录下新建ProductList.vue。组件需要包含模板、脚本和样式三部分:

<template>
  <div class="product-list">
    <h2>产品列表</h2>
    <ul>
      <li v-for="product in products" :key="product.id">
        {{ product.name }} - ¥{{ product.price }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      products: [
        { id: 1, name: '产品A', price: 99 },
        { id: 2, name: '产品B', price: 199 }
      ]
    }
  }
}
</script>

动态数据加载

通过axios从API获取数据:

<script>
import axios from 'axios';

export default {
  data() {
    return {
      products: [],
      loading: false
    }
  },
  async created() {
    this.loading = true;
    try {
      const response = await axios.get('/api/products');
      this.products = response.data;
    } catch (error) {
      console.error('获取产品失败:', error);
    } finally {
      this.loading = false;
    }
  }
}
</script>

列表项组件化

创建ProductItem.vue子组件提高复用性:

<template>
  <div class="product-item">
    <img :src="product.image" :alt="product.name">
    <h3>{{ product.name }}</h3>
    <p>价格: {{ product.price }}</p>
    <button @click="$emit('add-to-cart', product)">加入购物车</button>
  </div>
</template>

<script>
export default {
  props: {
    product: {
      type: Object,
      required: true
    }
  }
}
</script>

分页功能实现

添加分页控制逻辑:

<template>
  <div>
    <ProductItem 
      v-for="product in paginatedProducts"
      :product="product"
      @add-to-cart="handleAddToCart"
    />
    <div class="pagination">
      <button 
        v-for="page in totalPages" 
        :key="page"
        @click="currentPage = page"
      >
        {{ page }}
      </button>
    </div>
  </div>
</template>

<script>
import ProductItem from './ProductItem.vue';

export default {
  components: { ProductItem },
  data() {
    return {
      products: [],
      currentPage: 1,
      itemsPerPage: 5
    }
  },
  computed: {
    totalPages() {
      return Math.ceil(this.products.length / this.itemsPerPage);
    },
    paginatedProducts() {
      const start = (this.currentPage - 1) * this.itemsPerPage;
      const end = start + this.itemsPerPage;
      return this.products.slice(start, end);
    }
  }
}
</script>

搜索与筛选

增加产品搜索功能:

<template>
  <div>
    <input 
      v-model="searchQuery" 
      placeholder="搜索产品..."
    >
    <select v-model="selectedCategory">
      <option value="">所有分类</option>
      <option 
        v-for="category in categories" 
        :value="category"
      >
        {{ category }}
      </option>
    </select>
    <ProductItem 
      v-for="product in filteredProducts"
      :product="product"
    />
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      selectedCategory: '',
      categories: ['电子', '家居', '服饰']
    }
  },
  computed: {
    filteredProducts() {
      return this.products.filter(product => {
        const matchesSearch = product.name
          .toLowerCase()
          .includes(this.searchQuery.toLowerCase());
        const matchesCategory = !this.selectedCategory || 
          product.category === this.selectedCategory;
        return matchesSearch && matchesCategory;
      });
    }
  }
}
</script>

性能优化

对于大型列表使用虚拟滚动:

vue实现产品列表

<template>
  <RecycleScroller
    class="scroller"
    :items="products"
    :item-size="100"
    key-field="id"
  >
    <template v-slot="{ item }">
      <ProductItem :product="item" />
    </template>
  </RecycleScroller>
</template>

<script>
import { RecycleScroller } from 'vue-virtual-scroller';
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css';

export default {
  components: { RecycleScroller }
}
</script>

标签: 列表产品
分享给朋友:

相关文章

h5实现展开列表

h5实现展开列表

使用HTML5和CSS实现展开列表 在HTML5中,可以通过结合CSS和JavaScript实现展开列表效果。以下是几种常见的方法: 方法1:使用details和summary标签 HTML5提供…

vue实现功能列表

vue实现功能列表

Vue 实现功能列表的方法 在 Vue 中实现功能列表通常涉及数据绑定、列表渲染、事件处理和状态管理。以下是几种常见的方法: 数据驱动列表渲染 使用 v-for 指令可以轻松实现列表渲染。假设有一个…

vue 实现列表多选

vue 实现列表多选

Vue 实现列表多选的方法 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以自动处理多选逻辑。适用于复选框(checkbox)场景。 <template> &…

vue实现传输列表

vue实现传输列表

Vue 实现传输列表 在 Vue 中实现传输列表功能,通常涉及两个列表之间的数据传递,用户可以通过按钮或拖拽操作将项目从一个列表移动到另一个列表。以下是实现传输列表的几种方法。 使用组件间数据传递…

vue实现列表过渡

vue实现列表过渡

vue实现列表过渡的方法 在Vue中,可以使用内置的<transition-group>组件来实现列表项的过渡效果。该组件专门为动态列表设计,能够处理元素的添加、删除和顺序变化。 基本用…

vue实现产品列表

vue实现产品列表

Vue 实现产品列表的方法 使用 Vue CLI 创建项目 安装 Vue CLI 并初始化项目,确保项目环境配置正确。 npm install -g @vue/cli vue create prod…