当前位置:首页 > VUE

vue实现商品展示

2026-01-17 21:13:09VUE

使用 Vue 实现商品展示

商品数据准备

商品数据可以存储在 Vue 组件的 data 中,或者通过 API 从后端获取。以下是一个简单的商品数据示例:

data() {
  return {
    products: [
      {
        id: 1,
        name: '商品1',
        price: 100,
        image: 'product1.jpg',
        description: '商品1的描述'
      },
      {
        id: 2,
        name: '商品2',
        price: 200,
        image: 'product2.jpg',
        description: '商品2的描述'
      }
    ]
  }
}

商品列表渲染

使用 v-for 指令遍历商品数据,动态生成商品列表:

<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.description }}</p>
    <span>{{ product.price }}元</span>
  </div>
</div>

商品样式设计

通过 CSS 为商品列表添加样式,使其更具吸引力:

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

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

.product-item:hover {
  transform: translateY(-5px);
  box-shadow: 0 5px 15px rgba(0,0,0,0.1);
}

.product-item img {
  width: 100%;
  height: 200px;
  object-fit: cover;
  border-radius: 5px;
}

商品筛选功能

添加筛选功能,例如按价格或类别筛选商品:

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

商品分页展示

对于大量商品,可以实现分页功能:

data() {
  return {
    currentPage: 1,
    itemsPerPage: 8
  }
},
computed: {
  paginatedProducts() {
    const start = (this.currentPage - 1) * this.itemsPerPage
    const end = start + this.itemsPerPage
    return this.filteredProducts.slice(start, end)
  },
  totalPages() {
    return Math.ceil(this.filteredProducts.length / this.itemsPerPage)
  }
}

商品详情页

创建商品详情组件,展示商品的详细信息:

<template>
  <div class="product-detail">
    <img :src="product.image" :alt="product.name">
    <h1>{{ product.name }}</h1>
    <p class="price">{{ product.price }}元</p>
    <p class="description">{{ product.description }}</p>
    <button @click="addToCart">加入购物车</button>
  </div>
</template>

<script>
export default {
  props: ['product'],
  methods: {
    addToCart() {
      this.$emit('add-to-cart', this.product)
    }
  }
}
</script>

商品搜索功能

实现商品搜索功能,让用户可以通过关键词查找商品:

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

这些方法可以帮助快速实现一个功能完善的商品展示页面,根据实际需求可以进一步扩展功能。

vue实现商品展示

标签: 商品vue
分享给朋友:

相关文章

vue 路由实现

vue 路由实现

Vue 路由实现方法 安装 Vue Router 使用 npm 或 yarn 安装 Vue Router 依赖包: npm install vue-router # 或 yarn add vue-…

vue实现组件循环

vue实现组件循环

Vue 组件循环的实现方法 在 Vue 中实现组件循环通常使用 v-for 指令,可以循环渲染数组或对象的数据到组件上。 基本数组循环 通过 v-for 指令遍历数组,渲染多个相同结构的组件。…

vue实现tab换行

vue实现tab换行

Vue实现Tab切换的常见方法 使用Vue实现Tab切换功能可以通过多种方式完成,以下是几种常见的方法: 动态组件结合v-if或v-show 通过v-if或v-show控制不同Tab内容的显示…

vue实现导航切换内容

vue实现导航切换内容

Vue实现导航切换内容的方法 在Vue中实现导航切换内容,可以通过以下方式实现: 使用动态组件 动态组件通过<component :is="currentComponent">实现内容切…

在线脑图 vue 实现

在线脑图 vue 实现

在线脑图 Vue 实现方案 使用开源库实现 推荐使用 mind-elixir 或 jsmind 这类开源库,它们专为脑图设计且支持 Vue 集成。 安装依赖: npm install mind…

vue实现列表显示

vue实现列表显示

Vue 实现列表显示的方法 在 Vue 中实现列表显示通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式。 基本列表渲染 通过 v-for 指令遍历数组,动态生成…