当前位置:首页 > 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 实现列表添加功能 数据绑定与列表渲染 在 Vue 中,通过 v-for 指令可以轻松实现列表渲染。首先需要定义一个数组来存储列表数据,并在模板中使用 v-for 循环渲染。 <…

vue实现列表循环

vue实现列表循环

列表循环的实现方式 在Vue中实现列表循环主要依赖于v-for指令,该指令基于源数据多次渲染元素或模板块。 基础数组循环 使用v-for遍历数组时,语法为item in items或(item,…

vue实现悬浮列表

vue实现悬浮列表

Vue 实现悬浮列表的方法 使用 CSS 固定定位 通过 CSS 的 position: fixed 属性实现悬浮效果。在 Vue 模板中,为列表容器添加固定定位样式,并设置 top、left 等属…

vue实现功能列表

vue实现功能列表

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

vue实现商品搜索

vue实现商品搜索

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

vue实现影片列表

vue实现影片列表

Vue 实现影片列表 使用 Vue CLI 创建项目 确保已安装 Vue CLI,通过以下命令创建新项目: vue create movie-list cd movie-list 安装依赖 根据…