当前位置:首页 > VUE

vue实现商品列表代码

2026-01-20 02:00:26VUE

vue实现商品列表代码

vue实现商品列表代码

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

基础商品列表渲染

<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为HTML表格添加基础样式,如边框、间距和背景色: table { width: 100%; border-collapse: collapse; margin:…

css网页制作代码

css网页制作代码

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

代码雨实现vue

代码雨实现vue

实现代码雨效果(Vue版) 使用Vue实现代码雨效果可以通过Canvas绘制结合动画帧实现。以下是完整实现方案: 核心代码结构 <template> <div class="c…

vue实现商品累加

vue实现商品累加

Vue实现商品累加功能 商品累加功能通常用于购物车或商品列表,允许用户增减商品数量。以下是实现方法: 数据绑定与基础累加 在Vue组件中定义商品数据,使用v-model绑定数量输入框: data(…

vue长轮询代码实现

vue长轮询代码实现

Vue 长轮询实现方法 长轮询(Long Polling)是一种服务器推送技术,客户端发送请求后,服务器保持连接开放直到有新数据或超时。以下是 Vue 中实现长轮询的代码示例。 基本实现逻辑 定义一…

vue商品搜索怎么实现

vue商品搜索怎么实现

实现商品搜索功能 在Vue中实现商品搜索功能通常需要结合前端和后端技术。以下是常见的实现方法: 前端实现方案 创建搜索输入框和结果展示组件: <template> <…