当前位置:首页 > VUE

vue实现商品列表

2026-02-09 09:07:06VUE

Vue 实现商品列表

基本结构搭建

使用 Vue CLI 或 Vite 创建一个新项目,安装必要的依赖。商品列表通常包含以下核心组件:

  • 商品卡片组件(展示图片、名称、价格等)
  • 列表容器组件(排列商品卡片)
  • 筛选/排序功能组件(可选)

数据准备

通过 API 获取或本地模拟商品数据。数据结构示例:

// 模拟数据
const products = [
  {
    id: 1,
    name: '商品A',
    price: 99,
    image: 'url_to_image',
    inventory: 10
  },
  // 更多商品...
]

商品卡片组件

创建 ProductCard.vue 组件:

vue实现商品列表

<template>
  <div class="product-card">
    <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>

列表容器组件

创建 ProductList.vue 组件:

<template>
  <div class="product-list">
    <ProductCard 
      v-for="product in filteredProducts" 
      :key="product.id" 
      :product="product"
      @add-to-cart="handleAddToCart"
    />
  </div>
</template>

<script>
import ProductCard from './ProductCard.vue'

export default {
  components: { ProductCard },
  props: {
    products: {
      type: Array,
      required: true
    }
  },
  computed: {
    filteredProducts() {
      // 可添加筛选逻辑
      return this.products
    }
  },
  methods: {
    handleAddToCart(product) {
      this.$emit('add-to-cart', product)
    }
  }
}
</script>

状态管理

对于复杂场景,建议使用 Vuex 或 Pinia:

vue实现商品列表

// Pinia 示例
import { defineStore } from 'pinia'

export const useProductStore = defineStore('products', {
  state: () => ({
    products: [],
    cart: []
  }),
  actions: {
    async fetchProducts() {
      const response = await fetch('/api/products')
      this.products = await response.json()
    },
    addToCart(product) {
      this.cart.push(product)
    }
  }
})

筛选与排序

ProductList.vue 中添加计算属性:

computed: {
  sortedProducts() {
    return [...this.products].sort((a, b) => a.price - b.price)
  },
  filteredProducts() {
    return this.sortedProducts.filter(product => 
      product.name.includes(this.searchQuery)
    )
  }
}

样式优化

使用 CSS Grid 或 Flexbox 布局商品列表:

.product-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 20px;
  padding: 20px;
}

.product-card {
  border: 1px solid #ddd;
  padding: 15px;
  border-radius: 8px;
  transition: transform 0.3s;
}

.product-card:hover {
  transform: translateY(-5px);
}

分页加载

实现无限滚动或分页器组件:

// 无限滚动示例
window.addEventListener('scroll', () => {
  if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 500) {
    this.loadMoreProducts()
  }
})

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

相关文章

vue实现商品搜索

vue实现商品搜索

实现商品搜索功能 在Vue中实现商品搜索功能,可以通过以下步骤完成。假设有一个商品列表,用户可以通过输入关键词来筛选商品。 1. 准备商品数据 商品数据可以存储在Vue组件的data中,也可以从后…

Vue实现商品详情

Vue实现商品详情

Vue实现商品详情页的方法 数据获取与渲染 使用Vue的data属性存储商品详情数据,通过v-for指令循环渲染商品属性列表。结合v-if或v-show控制图片预览、库存状态等动态显示。 data(…

vue实现列表滚动

vue实现列表滚动

Vue 实现列表滚动的方法 使用 CSS 实现滚动 通过 CSS 的 overflow 属性可以轻松实现列表滚动。在 Vue 的模板中,为列表容器添加 overflow-y: auto 或 overf…

vue实现增加商品

vue实现增加商品

使用 Vue 实现商品添加功能 实现步骤 1. 创建商品表单组件 开发一个商品表单组件,包含商品名称、价格、描述等字段。使用 Vue 的 v-model 指令实现双向数据绑定。 <templ…

vue实现产品列表

vue实现产品列表

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

vue实现商品详解

vue实现商品详解

Vue 实现商品详情页功能 技术栈选择 Vue 3 + Vue Router + Pinia(状态管理)+ Axios(数据请求)+ Element UI/Vant(可选UI库) 核心功能模块 数…