前几天看到有赞的vant,顿时对做一个商城项目产生了兴趣。说干就干,让我们来一步步实现。
预览地址:http://zy.whaoot.com/dmodel/i...
已实现购物车逻辑,商城首页等功能。
商城首页:

使用vuex搭建的购物车,将加入购物车的商品存储到vuex,实现购物车的预览与购物车里对商品的数量的选择(包括左滑删除商品),附上购物车图片:
商城的一个重点的功能,就在于购物车的实现。vuex可以很好的帮我们来实现购物车。
1.首先,我们得对vuex有一定的了解,还未了解vuex的小伙伴可自行去vuex官网仔细查看。
购物车的实现,首先我们在state里面创建一个空数组,作为储存购物车商品的仓库,同样我们也需要创建一个对象来存放商品的总价和总数:

shopcartfn:{num:'',price:'',
},
shopcartprods:[],

2.其次我们需要在action里面对加入购物车进行处理(注意vuex中的异步都需要在action中处理,action的最终也是触发mutations来对state的数据进行修改)
setshopCart({commit,state},products){

    if(state.shopcartprods.length>0){new Promise((resolve,reject)=>{let arr=[]for(var i=0;i<state.shopcartprods.length;i++){//先将goods_id和当前size的id放到数组 后面判断添加的 在arr中是否有arr.push({goods_id:state.shopcartprods[i].goodsId,good_id:state.shopcartprods[i].selectedSkuComb.id})}let brr={goods_id:products.goodsId,good_id:products.selectedSkuComb.id}//JSON.stringify(arr).indexOf(JSON.stringify(brr))!=-1判断没有赋值关系的json是否在数组中 ;没赋值关系不能直接indexOf()if(JSON.stringify(arr).indexOf(JSON.stringify(brr))!=-1){    for(var i=0;i<state.shopcartprods.length;i++){if(arr[i].goods_id==brr.goods_id&&arr[i].good_id==brr.good_id){resolve(i)}}    }else{reject(state.shopcartprods.length)}}).then(res=>{Object.assign(products,{index:res})commit('addproduct',products)    return},err=>{Object.assign(products,{index:err})commit('storeproduct',products)})                    }else{Object.assign(products,{index:0})commit('storeproduct',products)}
}

我们在setshopCart状态中,对已有的商品进行判断,如果已经在shopcartprods有当前加入的商品,则对当前商品对数量增加,否则就push到shopcartprods中。
3.action的本质是触发mutations,所以我们在mutations中,进行shopcartprods的数据的更改 storeproduct(state,value){

    state.shopcartprods.push(value)},addproduct(state,value){state.shopcartprods[value.index].selectedNum=state.shopcartprods[value.index].selectedNum+value.selectedNum },

4.最后,我们需要对购物车内商品对总数和价格进行统计,这时候我们就需要用到getter。在getter中我们计算商品的总数和总价格
shopcartdata:(state)=>{

       let cartdata={price:0,num:0}for(let i=0;i<state.shopcartprods.length;i++){cartdata.price=state.shopcartprods[i].selectedNum*state.shopcartprods[i].selectedSkuComb.price+cartdata.price;cartdata.num=state.shopcartprods[i].selectedNum+cartdata.num}//    cartdata.price=cartdata.price*100return cartdata}

当我们在购物车显示getter的总价时,只需要在computed中获取getter中的数据
computed: {

shopcartdata() {return this.$store.getters.shopcartdata;
}

},

自此,购物车的逻辑基本完成。

不得不说vant还是将业务模块的组件做的很不错的,部分商城业务组件可以直接上手就用。

附上github地址:https://github.com/noobzzzz/v...,希望能对需要的小伙伴有所帮助,如果对您起到了帮助,请github点个赞哦,谢谢!!

使用vue+vant搭建商城相关推荐

  1. vue+vant搭建移动端框架

    主要内容 1.vant/rem移动端适配的解决方案 2. vue/cli二次配置及优化处理 3.基于注册动态模式实现loading 4.掌握vuex永久化存储 1 创建一个vue项目 1.1安装vue ...

  2. 轻松搭建基于 SpringBoot Vue 的 Web 商城应用

    背景介绍 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数 ...

  3. Serverless 实战 —— 轻松搭建基于 SpringBoot + Vue 的 Web 商城应用

    Serverless 实战 -- 轻松搭建基于 SpringBoot + Vue 的 Web 商城应用 背景介绍 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute ...

  4. 基于 vue-cli4+vant 搭建 H5 通用架子(支持微信公众号)

    基于 vue-cli4+vant 搭建 H5 通用架子(支持微信公众号) 已经上传vue3.0+ts分支 如果有优化建议和bug请提issue 代码仓库 功能介绍 支持 px 自动转 vw(rem暂时 ...

  5. vue3+vite3+vant搭建移动端简易模版

    前言 vue3.x相关的生态已经在不断的完善中,相应的UI/路由/pinia等都已成熟,新的项目也在考虑使用新版本开发了,开一个帖子记录一下搭建移动端简易模版的过程,方便以后回顾. vite前端构建工 ...

  6. Springboot+mysql+基于VUE框架的商城综合项目设计与实现 毕业设计-附源码111612

    基于VUE框架的商城综合项目设计与实现 摘 要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,商城综合项目当然也不能排除在外.商城综合项目 ...

  7. (附源码)Springboot+mysql+基于VUE框架的商城综合项目设计与实现 毕业设计111612

    基于VUE框架的商城综合项目设计与实现 摘 要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,商城综合项目当然也不能排除在外.商城综合项目 ...

  8. springboot基于VUE框架的商城综合项目设计与实现毕业设计源码111612

    基于VUE框架的商城综合项目设计与实现 摘  要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,商城综合项目当然也不能排除在外.商城综合项 ...

  9. springboot基于VUE框架的商城综合项目设计与实现毕业设计源码

    基于VUE框架的商城综合项目设计与实现 摘  要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,商城综合项目当然也不能排除在外.商城综合项 ...

最新文章

  1. VGG卷积神经网络模型加载与运行
  2. 互联网人必读的30本书
  3. GridView和DetailsView在同一页与不同页两种情况的联动
  4. 获取Windwos的版本和名称 -- GetVersion|GetVersionEx
  5. SLB vs CLB
  6. 【ABAP】CK11N相关Table
  7. 量化交易实战——互联网金融之四
  8. Asp.Net Core MVC控制器和视图之间传值
  9. 将数据归一化到任意区间范围的方法
  10. 服务器启动时的leader选举
  11. csdn2020年度博客之星 - 直播间(恭喜圆满结束)
  12. Android Frame动画概述及示例
  13. “超人”助阵,IE静音很简单
  14. jquery中的live()方法
  15. [洛谷P3292][SCOI2016]幸运数字
  16. JS入门到精通完整版
  17. copyonwritearraylist 深究
  18. OA表单设计 案例展示
  19. C++ vector函数接口及其底层原理
  20. android 输入法悬浮,专为大屏手机设计,谷歌Gboard输入法新增悬浮键盘功能

热门文章

  1. matlab研究,基于MATLAB的实时数据采集与分析研究
  2. wps 每页显示50行
  3. elasticsearch倒排索引原理与中文分词器
  4. 向量学习2:图形围绕自己中心旋转、围绕图形外或内任意点为中心旋转
  5. 解决VirtualBox CentOS8无法调整分辨率的问题
  6. 月份加日期前面用on还是in_年月日前什么时候用in,什么时候用on
  7. python随机生成小写字母表_用小写字母生成大随机字符串的最快方法
  8. 简单有趣的互动小游戏介绍:好玩的密室脱逃H5互动小游戏
  9. Farmer John的故事——写给程序员们
  10. img预加载获取图片大小方法