购物车功能实现增加

一.点击+号,把商品信息存入到购物车里面

1.分析

购物车信息因为需要多个页面共享,如(订单页面,派送页面),不能存入页面管理,因此需要将购物车数据存到全局进行管理,所以使用VueX,存入到全局管理。

2.购物车数据结构的设计:创建存放购物车信息的列表

打开store文件夹中的index.js页面,在state对象中创建购物车列表,命为cartList

cartList需要根据商铺的不同来存储不同的信息。cartList第一层级用来存放商铺的ID,

第二层级 用来存放该商铺的商品ID ,还需要一个count,表示商品添加了几份

这样才算一个购物车标准的结构

如图

因为在访问网页的时候,第一次购物车是没有内容的 所以一开始应该为空对象        cartList:{  }

3.将页面中的计数改为动态数据

 

将购物车数据引入到商铺页面:通过解构赋值,拿到购物车中的数据

setup(){
const route =useRoute();
const store = useStore();
//解构赋值,拿到购物车数据
const {cartList} = toRefs(store.state);
//获取当前页面的商铺id
const shopId=route.params.id;
//返回到外面 可以使用
return {cartList,shopId}
}

然后在模板中将计数更改为动态数据:

item为当前商铺中商品的信息,并且采用了v-for循环。

如果获取不到购物车中的count,那么默认会使用 0

 为什么加  ?.  这是可选链,第一次初始化加载页面获取不到购物车中的数据是没有内容的,可能会是undefined因此可能会报错,可选链的用法可以容错,避免报错,

 4.为+号添加单击事件,点击加号如何将商品信息添加至购物车列表

首先要想应该存放在哪里?

①需要将shopId传入到参数中,shopId是可以在模板中获取到的。寻找到购物车列表第一层商铺id

②需要将productId传入到参数中,商铺id下面的商品id

③商品信息

如图

5. 定义单击事件:

 开始操作VueX 中的数据

 ​​​​​​​

 在VueX中结合数据结构,接收传递的参数并在cartList中添加内容:

import { createStore } from 'vuex'

export default createStore({
  state: {
    // 购物车列表
    cartList:{

    }
  },
  mutations: {
    // 接收两个参数,第一个参数VueX中的state,第二个是传递过来的参数
    addItemToCart(state,payload){
      // 获取 当前商铺ID,商品ID,商品信息
      const {shopId,productId,productInfo} =payload;
    }
  },
  actions: {
  },
  modules: {
  }
})

 一开始 先获取shopInfo,也就是传递过来的店铺id,

接下来将在代码段讲解

 

  mutations: {
    // 接收两个参数,第一个参数VueX中的state,第二个是传递过来的参数
    addItemToCart(state,payload){
      // 获取 当前商铺ID,商品ID,商品信息
      const {shopId,productId,productInfo} =payload;
      // 把购物车中的商铺ID赋值给shopInfo
      let shopInfo = state.cartList[shopId];
      // 如果页面初始化,shopInfo为undefined,那么就创建一个店铺id空对象
      if(!shopInfo) { shopInfo={} }
       // 把商品信息ID赋值给product
      let product =shopInfo[productId];
      // 如果页面初始化,product为undefined,那么将传递过来的商品信息赋值给product,并创建一个属性count 赋值为0
      if(!product) {
        product=productInfo;
        product.count=0
      }
      // 点击加号 每次count+1
      product.count+=1
      // 创建一个key为点击加号传递的商品ID,赋值一个value 为当前商品信息
      shopInfo[productId]=product;
      // 加入购物车
      state.cartList[shopId]=shopInfo
    }
  },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现购物车添加物品的功能,需要使用HTML、CSS和JavaScript。 首先,在HTML中,可以使用表单元素来创建一个购物车页面。可以使用<div>或<table>元素来创建购物车的表格,表格中可以有列来显示物品的名称、价格和数量。还可以为每个物品添加一个删除按钮,方便用户移除已添加的物品。 接下来,使用CSS样式来美化购物车页面,可以设置表格的边框、背景颜色以及字体样式,使其看起来更加美观。 然后,在JavaScript中,可以通过监听"添加购物车"按钮的点击事件来实现添加物品到购物车功能。当用户点击添加按钮时,可以通过JavaScript获取物品的名称、价格和数量,并将这些数据添加购物车的表格中的行中。 同时,可以使用JavaScript来计算购物车中物品的总价格。在每次添加物品时,将物品的价格与数量相乘,并将结果累加到购物车的总价格中。 如果用户想要移除已添加的物品,可以通过监听删除按钮的点击事件来实现。当用户点击删除按钮时,可以使用JavaScript来从购物车中移除对应的行,并重新计算购物车的总价格。 最后,可以为购物车页面添加结算按钮。当用户点击结算按钮时,可以使用JavaScript来处理购物车的数据,例如发送数据给服务器进行结算操作,或者跳转到支付页面。 总之,通过HTML、CSS和JavaScript的配合,可以实现购物车添加物品的功能,提升用户的购物体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值