当前位置:首页 > VUE

vue实现商品列表代码

2026-01-20 02:00:26VUE

以下是一个基于Vue.js的商品列表实现示例,包含基础功能如数据渲染、分页和筛选:

vue实现商品列表代码

基础商品列表渲染

<template>
  <div class="product-list">
    <div v-for="product in products" :key="product.id" class="product-item">
      <img :src="product.image" :alt="product.name">
      <h3>{{ product.name }}</h3>
      <p>价格: ¥{{ product.price }}</p>
      <button @click="addToCart(product)">加入购物车</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      products: [
        { id: 1, name: '商品A', price: 99, image: '/path/to/image1.jpg' },
        { id: 2, name: '商品B', price: 199, image: '/path/to/image2.jpg' }
      ]
    }
  },
  methods: {
    addToCart(product) {
      // 购物车逻辑
    }
  }
}
</script>

<style scoped>
.product-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 20px;
}
.product-item {
  border: 1px solid #ddd;
  padding: 15px;
  text-align: center;
}
</style>

添加分页功能

export default {
  data() {
    return {
      currentPage: 1,
      pageSize: 5,
      allProducts: [...], // 完整商品数据
    }
  },
  computed: {
    paginatedProducts() {
      const start = (this.currentPage - 1) * this.pageSize
      return this.allProducts.slice(start, start + this.pageSize)
    },
    totalPages() {
      return Math.ceil(this.allProducts.length / this.pageSize)
    }
  }
}

实现筛选功能

export default {
  data() {
    return {
      priceRange: [0, 1000],
      categoryFilter: ''
    }
  },
  computed: {
    filteredProducts() {
      return this.allProducts.filter(product => {
        return (
          product.price >= this.priceRange[0] &&
          product.price <= this.priceRange[1] &&
          (this.categoryFilter === '' || product.category === this.categoryFilter)
        )
      })
    }
  }
}

商品排序实现

export default {
  data() {
    return {
      sortBy: 'price',
      sortDirection: 'asc'
    }
  },
  computed: {
    sortedProducts() {
      return [...this.filteredProducts].sort((a, b) => {
        const modifier = this.sortDirection === 'asc' ? 1 : -1
        return a[this.sortBy] > b[this.sortBy] ? 1 * modifier : -1 * modifier
      })
    }
  },
  methods: {
    changeSort(field) {
      if (this.sortBy === field) {
        this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc'
      } else {
        this.sortBy = field
        this.sortDirection = 'asc'
      }
    }
  }
}

商品搜索功能

export default {
  data() {
    return {
      searchQuery: ''
    }
  },
  computed: {
    searchedProducts() {
      if (!this.searchQuery) return this.sortedProducts
      const query = this.searchQuery.toLowerCase()
      return this.sortedProducts.filter(product => 
        product.name.toLowerCase().includes(query) ||
        product.description.toLowerCase().includes(query)
      )
    }
  }
}

以上代码可根据实际需求组合使用,构建完整的商品列表功能。建议使用Vuex或Pinia管理状态,对于大型电商项目可考虑使用服务端分页和筛选。

标签: 代码商品
分享给朋友:

相关文章

css网页制作代码

css网页制作代码

以下是一些常用的CSS网页制作代码示例,涵盖布局、样式和交互效果: 基础布局与样式 重置浏览器默认样式 * { margin: 0; padding: 0; box-sizing: b…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…

vue 实现商品页面

vue 实现商品页面

实现商品页面的基本步骤 使用Vue.js实现商品页面需要结合组件化开发、数据绑定和路由等功能。以下是一个典型实现方案: 商品数据管理 商品数据通常存储在Vuex或Pinia状态管理中,也可以通过AP…

vue抽奖代码实现

vue抽奖代码实现

Vue 抽奖代码实现 基础抽奖组件结构 使用 Vue 3 的 Composition API 实现抽奖功能,核心包括转盘动画、奖品列表和抽奖逻辑。以下为组件基础结构: <template>…

vue论坛代码实现

vue论坛代码实现

Vue 论坛代码实现 项目初始化 使用 Vue CLI 或 Vite 创建一个新的 Vue 项目。推荐使用 Vue 3 和 Composition API。 npm create vue@lates…

vue实现商品详情讲解

vue实现商品详情讲解

Vue 实现商品详情页的核心步骤 搭建基础结构 使用 Vue CLI 或 Vite 初始化项目,安装必要依赖(如 vue-router、axios)。通过路由配置商品详情页路径(例如 /product…