用openAi实现的vue实购物车和react购物车

以下是一个用 Vue.js 实现购物车的简单示例:

在 Vue 组件中定义购物车数据:
data() {
  return {
    cart: [],
    total: 0
  }
}
在商品列表或详情页中添加“加入购物车”按钮,并绑定添加购物车方法:
<button @click="addToCart(product)">加入购物车</button>
实现 addToCart 方法:
methods: {
  addToCart(product) {
    // 判断购物车中是否已经存在该商品,如果存在,则更新数量,否则添加新商品到购物车
    let existingProduct = this.cart.find(item => item.id === product.id)
    if (existingProduct) {
      existingProduct.quantity++
    } else {
      this.cart.push({
        id: product.id,
        name: product.name,
        price: product.price,
        quantity: 1
      })
    }

    // 计算购物车总金额
    this.total += product.price
  }
}
在购物车页面中展示所有已添加到购物车中的商品信息和总金额:
<div v-for="product in cart" :key="product.id">
  <p>{{ product.name }}</p>
  <p>单价:{{ product.price }} 元</p>
  <p>数量:<input type="number" v-model.number="product.quantity"></p>
  <p>小计:{{ product.price * product.quantity }} 元</p>
</div>
<div>总金额:{{ total }} 元</div>
实现购物车商品数量增减和删除操作:
methods: {
  // 增加商品数量
  increaseQuantity(product) {
    product.quantity++
    this.total += product.price
  },

  // 减少商品数量
  decreaseQuantity(product) {
    if (product.quantity > 1) {
      product.quantity--
      this.total -= product.price
    }
  },

  // 删除商品
  removeProduct(product) {
    let index = this.cart.indexOf(product)
    if (index !== -1) {
      this.cart.splice(index, 1)
      this.total -= product.price * product.quantity
    }
  }
}
以上是一个简单的 Vue.js 购物车示例,实际开发需根据具体业务需求进行更详细和复杂的设计和实现。

以下是一个简单的 React 购物车示例:

在 React 组件中定义购物车数据:
state = {
  cart: [],
  total: 0
}
在商品列表或详情页中添加“加入购物车”按钮,并绑定添加购物车方法:
<button onClick={() => this.addToCart(product)}>加入购物车</button>
实现 addToCart 方法:
addToCart = (product) => {
  // 判断购物车中是否已经存在该商品,如果存在,则更新数量,否则添加新商品到购物车
  let existingProduct = this.state.cart.find(item => item.id === product.id)
  if (existingProduct) {
    existingProduct.quantity++
  } else {
    this.setState({
      cart: [...this.state.cart, { id: product.id, name: product.name, price: product.price, quantity: 1 }]
    })
  }

  // 计算购物车总金额
  this.setState({ total: this.state.total + product.price })
}
在购物车页面中展示所有已添加到购物车中的商品信息和总金额:
{this.state.cart.map(product => (
  <div key={product.id}>
    <p>{product.name}</p>
    <p>单价:{product.price} 元</p>
    <p>数量:<input type="number" value={product.quantity} onChange={(e) => this.handleQuantityChange(e, product)} /></p>
    <p>小计:{product.price * product.quantity} 元</p>
  </div>
))}
<div>总金额:{this.state.total} 元</div>
实现购物车商品数量增减和删除操作:
handleQuantityChange = (e, product) => {
  let newQuantity = parseInt(e.target.value)
  let deltaQuantity = newQuantity - product.quantity
  let deltaTotal = deltaQuantity * product.price
  product.quantity = newQuantity
  this.setState({
    cart: [...this.state.cart],
    total: this.state.total + deltaTotal
  })
}

removeProduct = (product) => {
  let index = this.state.cart.indexOf(product)
  if (index !== -1) {
    let deltaTotal = -product.price * product.quantity
    this.setState({
      cart: [...this.state.cart.slice(0, index), ...this.state.cart.slice(index + 1)],
      total: this.state.total + deltaTotal
    })
  }
}
以上是一个简单的 React 购物车示例,实际开发需根据具体业务需求进行更详细和复杂的设计和实现。在 React 开发中,还可以使用 Redux、MobX 等状态管理库来更方便地管理全局状态和组件通信。

 

 

 

以下是一个简单的 HTML+CSS+JS 实现购物车的示例:

HTML 代码:

<div class="item">
  <img src="https://dummyimage.com/100x100/000/fff.png&text=Product+1" alt="Product 1">
  <h4>Product 1</h4>
  <p>Price: 10.00</p>
  <button onclick="addToCart(1)">Add to Cart</button>
</div>

<div class="item">
  <img src="https://dummyimage.com/100x100/000/fff.png&text=Product+2" alt="Product 2">
  <h4>Product 2</h4>
  <p>Price: 20.00</p>
  <button onclick="addToCart(2)">Add to Cart</button>
</div>

<div class="shopping-cart">
  <h3>Shopping Cart</h3>
  <ul id="cart-items"></ul>
  <p>Total: <span id="cart-total">0.00</span></p>
</div>
CSS 代码:

.item {
  display: inline-block;
  margin: 10px;
  width: 200px;
  text-align: center;
}

.item img {
  max-width: 100%;
}

.shopping-cart {
  border: 1px solid #ccc;
  padding: 10px;
  margin-top: 20px;
}

.shopping-cart h3 {
  margin-top: 0;
}

.shopping-cart ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.shopping-cart li {
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
}

.shopping-cart li span {
  margin-left: 10px;
}

.shopping-cart p {
  font-weight: bold;
  margin-top: 10px;
  text-align: right;
}
JS 代码:

let cart = []
let total = 0

function addToCart(productId) {
  let product = { id: productId, name: `Product ${productId}`, price: productId * 10 }
  let existingItem = cart.find(item => item.id === product.id)
  if (existingItem) {
    existingItem.quantity++
  } else {
    cart.push({ ...product, quantity: 1 })
  }
  total += product.price
  updateCart()
}

function removeFromCart(itemId) {
  let item = cart.find(item => item.id === itemId)
  if (item) {
    if (item.quantity > 1) {
      item.quantity--
      total -= item.price
    } else {
      let index = cart.indexOf(item)
      cart.splice(index, 1)
      total -= item.price
    }
    updateCart()
  }
}

function updateCart() {
  let cartItems = document.getElementById('cart-items')
  cartItems.innerHTML = ''
  cart.forEach(item => {
    let li = document.createElement('li')
    li.textContent = `${item.name} x ${item.quantity}`
    let span = document.createElement('span')
    span.textContent = `$${item.price * item.quantity}`
    let button = document.createElement('button')
    button.textContent = 'Remove'
    button.onclick = () => removeFromCart(item.id)
    li.appendChild(span)
    li.appendChild(button)
    cartItems.appendChild(li)
  })
  let cartTotal = document.getElementById('cart-total')
  cartTotal.textContent = `$${total.toFixed(2)}`
}
解释:

上面的 HTML 代码定义了两个商品,每个商品包含一个图片、名称、价格和“加入购物车”按钮。还定义了一个购物车部分,包含购物车标题、购物车列表和总金额。

CSS 代码定义了商品和购物车的样式,包括布局、边框、内边距、字体大小等方面的属性。

JS 代码定义了一个空的购物车数组 cart 和总金额 total,在 addToCart 方法中,根据商品 ID 创建一个新商品对象,并检查购物车中是否已经存在该商品,如果存在,则更新数量,否则添加新商品到购物车。
同时,计算购物车总金额并调用 updateCart 方法刷新购物车界面。 removeFromCart 方法实现购物车中商品数量减少或删除操作,并同样更新购物车数据和界面。 updateCart 方法根据购物车数组 cart 和总金额 total 动态生成购物车界面,包括每个商品的名称

 

posted @ 2023-03-28 11:55  热心市民~菜先生  阅读(63)  评论(0编辑  收藏  举报