当前位置:首页 > VUE

vue实现商品列表代码

2026-01-20 02:00:26VUE

以下是一个基于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管理状态,对于大型电商项目可考虑使用服务端分页和筛选。

vue实现商品列表代码

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

相关文章

h5实现响应式代码

h5实现响应式代码

响应式设计基础 HTML5实现响应式设计主要通过媒体查询(Media Queries)、弹性布局(Flexbox)、网格布局(Grid)和视口设置(Viewport Meta Tag)等技术。核心目标…

vue实现商品

vue实现商品

Vue实现商品功能的方法 在Vue中实现商品功能通常涉及商品列表展示、商品详情、购物车操作等模块。以下是几种常见的实现方式: 商品列表展示 使用v-for指令循环渲染商品数据,结合Vue的响应式特性…

jquery代码

jquery代码

以下是关于jQuery代码的常见用法和示例,涵盖基础操作、事件处理、DOM操作等核心功能: 基础语法 jQuery通过$()函数选择元素,支持CSS选择器语法: // 选择所有<p>…

vue怎么实现文本代码实现

vue怎么实现文本代码实现

Vue 实现文本代码展示的方法 在 Vue 中展示代码文本通常需要结合语法高亮和格式化的功能,以下是几种常见的实现方式: 使用 <pre> 和 <code> 标签 通过 H…

react如何代码优化

react如何代码优化

减少不必要的重新渲染 使用 React.memo 包装函数组件以避免在 props 未变化时重新渲染。对于类组件,可以通过 shouldComponentUpdate 或继承 PureComponen…

vue实现搜索商品

vue实现搜索商品

Vue 实现商品搜索功能 在 Vue 中实现商品搜索功能,可以通过以下步骤完成。假设已有商品列表数据,需要实现前端搜索过滤功能。 数据准备 准备商品列表数据,通常从 API 获取或本地定义: da…