当前位置:首页 > VUE

用vue实现简易购物车

2026-01-07 06:46:53VUE

实现步骤

创建一个Vue项目,确保已安装Vue CLI。可以通过以下命令初始化项目:

vue create shopping-cart
cd shopping-cart
npm run serve

项目结构

src目录下创建以下文件:

  • components/CartItem.vue:单个商品组件
  • components/CartList.vue:购物车列表组件
  • App.vue:主入口文件

数据准备

App.vue中定义商品数据和购物车状态:

data() {
  return {
    products: [
      { id: 1, name: '商品A', price: 100, stock: 5 },
      { id: 2, name: '商品B', price: 200, stock: 3 },
      { id: 3, name: '商品C', price: 300, stock: 2 }
    ],
    cart: []
  }
}

商品列表组件

创建CartList.vue组件用于展示商品列表和添加功能:

<template>
  <div>
    <h3>商品列表</h3>
    <ul>
      <li v-for="product in products" :key="product.id">
        {{ product.name }} - ¥{{ product.price }}
        <button @click="addToCart(product)">加入购物车</button>
      </li>
    </ul>
  </div>
</template>

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

购物车组件

创建CartItem.vue组件显示购物车内容:

<template>
  <div>
    <h3>购物车</h3>
    <div v-if="cart.length === 0">购物车为空</div>
    <ul v-else>
      <li v-for="(item, index) in cart" :key="index">
        {{ item.name }} × {{ item.quantity }} - ¥{{ item.price * item.quantity }}
        <button @click="removeItem(index)">删除</button>
      </li>
    </ul>
    <div v-if="cart.length > 0">
      总价: ¥{{ totalPrice }}
    </div>
  </div>
</template>

<script>
export default {
  props: ['cart'],
  computed: {
    totalPrice() {
      return this.cart.reduce((sum, item) => sum + item.price * item.quantity, 0)
    }
  },
  methods: {
    removeItem(index) {
      this.$emit('remove-item', index)
    }
  }
}
</script>

主组件整合

App.vue中整合功能:

<template>
  <div>
    <CartList :products="products" @add-to-cart="handleAddToCart" />
    <CartItem :cart="cart" @remove-item="handleRemoveItem" />
  </div>
</template>

<script>
import CartList from './components/CartList.vue'
import CartItem from './components/CartItem.vue'

export default {
  components: { CartList, CartItem },
  methods: {
    handleAddToCart(product) {
      const existingItem = this.cart.find(item => item.id === product.id)
      if (existingItem) {
        existingItem.quantity++
      } else {
        this.cart.push({ ...product, quantity: 1 })
      }
    },
    handleRemoveItem(index) {
      this.cart.splice(index, 1)
    }
  }
}
</script>

样式优化

添加基础样式增强用户体验:

用vue实现简易购物车

ul {
  list-style: none;
  padding: 0;
}
li {
  margin: 10px 0;
  padding: 10px;
  border: 1px solid #eee;
}
button {
  margin-left: 10px;
  cursor: pointer;
}

功能扩展建议

  • 添加本地存储持久化购物车数据
  • 实现商品数量增减按钮
  • 添加结算功能
  • 实现商品库存实时更新

以上实现提供了购物车核心功能,包括商品展示、添加至购物车、删除商品和计算总价。可以根据实际需求进一步扩展功能。

标签: 购物车简易
分享给朋友:

相关文章

php购物车的实现原理

php购物车的实现原理

购物车基本概念 购物车是电子商务网站的核心功能之一,允许用户临时存储选中的商品,支持增删改查操作,最终生成订单。PHP实现通常结合Session或数据库存储数据。 Session存储实现 使用PHP…

使用vue实现简易网页

使用vue实现简易网页

使用 Vue 实现简易网页 创建 Vue 项目 使用 Vue CLI 快速初始化项目,确保已安装 Node.js 和 npm。 运行以下命令创建项目: npm install -g @vue/c…

react中如何筛选购物车数据

react中如何筛选购物车数据

筛选购物车数据的实现方法 在React中筛选购物车数据通常涉及状态管理、过滤逻辑和渲染优化。以下是几种常见的实现方式: 使用状态管理存储购物车数据 购物车数据通常存储在组件的状态(如useState…

php购物车怎么实现

php购物车怎么实现

实现PHP购物车的基本步骤 购物车功能通常包括添加商品、删除商品、更新数量、计算总价等核心功能。以下是一个基于Session的PHP购物车实现方案。 初始化购物车Session 在PHP脚本开头初始…

购物车实现 php

购物车实现 php

购物车实现(PHP) 购物车是电商网站的核心功能之一,以下是基于PHP实现购物车功能的几种方法,包括会话存储和数据库存储方案。 基于会话(Session)的购物车 使用PHP的$_SESSION存储…

JS实现简易转盘抽奖

JS实现简易转盘抽奖

实现思路 使用HTML+CSS构建转盘界面,通过JavaScript控制旋转动画和抽奖逻辑。核心是随机生成旋转角度,结合CSS过渡效果实现平滑停止。 HTML结构 <div class="wh…