商城小程序(7.加入购物车)

目录

  • 一、配置vuex
  • 二、创建购物车的store模块
  • 三、在商品详情页中使用store模块
  • 四、实现购加入购物车功能
  • 五、动态统计购物车中商品的总数量
  • 六、持久化存储购物车的商品
  • 七、优化商品详情页的total侦听器
  • 八、动态为tabBar页面设置数据徽标
  • 九、将设置tabBar徽标的代码抽离为mixins

一、配置vuex

新建store目录,并创建store.js文件用于管理vuex相关内容
在这里插入图片描述
在store.js中 初始化store的实例对象

// 1.导入vue和vuex
import {createStore} from 'vuex'
// 导入购物车的vue模块
import moduleCart from '@/store/cart.js'// 3.创建store的实例对象
const store = createStore({modules: {// 购物车的vuex模块,模块内成员的访问路径被调整为m_cart'm_cart': moduleCart}
})// 4.向外共享store的实例对象
export default store

在main.js 中导入store实例对象并挂载到vue的实例上

在这里插入图片描述

二、创建购物车的store模块

同样目录下创建cart.js模块
在这里插入图片描述

在cart.js中,初始化如下的vuex模块

export default {// 为当前模块开启命名空间namespaced: true,// 模块的state数据state: () => ({//购物车数组,用来存储购物车中每个商品的信息对象//每个商品的信息对象,都包含如下6个属性://{goods_id  goods_name  goods_price  goods_count  goods_small_logo  goods_state}cart: []}),//模块的mutations方法mutations: {},// 模块的getters属性getters: {}
}

在store/store.js 模块中,导入并挂载购物车中的vue模块

在这里插入图片描述

三、在商品详情页中使用store模块

商品详情页面测试,是否能成功调用:

在这里插入图片描述
在这里插入图片描述

四、实现购加入购物车功能

在store目录下的cart.js模块中,封装一个将商品信息加入购物车的mutations方法,名为addToCart

	//模块的mutations方法mutations: {addToCart(state, goods){// 根据提交的商品Id,查询购物车中是否存在这个商品const findResult = state.cart.find(x => x.goods_id === goods.goods_id)// 如果不存在,则findResult 为 undefined 否则,为查找到的商品信息对象if(!findResult) {//如果购物车中没有这件商品,则直接pushstate.cart.push(goods)} else {// 如果购物车中有这件商品,则只更新数量即可findResult.goods_count++}}},

在商品详细页面中,通过mapMutations这个辅助方法,把vuex中的m_cart模块下的addToCart方法映射到当前页面:
在这里插入图片描述

为商品导航组件 uni-goods-nav 绑定 @buttonClick=“buttonClick”事件处理函数:

在这里插入图片描述

五、动态统计购物车中商品的总数量

在cart.js模块中,在getters节点中定义一个total方法,用于统计购物车中商品的总数量

	// 模块的getters属性getters: {//统计购物车中商品的总数量total(state) {let c = 0//循环统计商品的数量,累加到变量c中state.cart.forEach(goods => c += goods.goods_count)return c}}

在商品详情页面的script标签中,按需导入mapGetters方法并进行使用
在这里插入图片描述

通过watch侦听器,监听计算属性total值的变化,从而动态为购物车按钮的徽标赋值

在这里插入图片描述

点击加入购物车 实现添加功能
在这里插入图片描述
在这里插入图片描述

六、持久化存储购物车的商品

在这里插入图片描述

修改cart.js 模块中的state函数,读取本地存储的购物车数据,对cart数组进行初始化
在这里插入图片描述

七、优化商品详情页的total侦听器

在这里插入图片描述
在这里插入图片描述

重新加载页面,就能成功回显

在这里插入图片描述

八、动态为tabBar页面设置数据徽标

把store中的total映射到cart.vue中使用:

在这里插入图片描述
在页面刚显示出来的时候,立即调用setBadge方法,为tabBar设置数字徽标
在这里插入图片描述

在methods中,声明setBadge方法,通过uni.setTabBarBadge()为tabBar设置数字徽记
在这里插入图片描述
点击进入购物车页面
在这里插入图片描述

九、将设置tabBar徽标的代码抽离为mixins

在这里插入图片描述
在这里插入图片描述

选中首页,分类等界面也会反应出购物车徽标
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/607548.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tcp/ip协议2实现的插图,数据结构6 (24 - 章)

(142) 142 二四1 TCP传输控制协议 tcpstat统计量与tcp 函数调用链 (143) 143 二四2 TCP传输控制协议 宏定义与常量值–上 (144) 144 二四3 TCP传输控制协议 宏定义与常量值–下 (145) 145 二四4 TCP传输控制协议 结构tcphdr,tcpiphdr (146) 146 二四5 TCP传输控制协议 结构 tcp…

05、Kafka ------ 各个功能的作用解释(主题和分区 详解,用命令行和图形界面创建主题和查看主题)

目录 CMAK 各个功能的作用解释(主题)★ 主题★ 分区★ 创建主题:★ 列出和查看主题 CMAK 各个功能的作用解释(主题) ★ 主题 Kafka 主题虽然也叫 topic,但它和 Pub-Sub 消息模型中 topic 主题及 AMQP 的 t…

考研个人经验总结【心理向】

客官你好 首先,不管你是以何种原因来到这篇博客,以下内容或多或少可能带给你一些启发。如果你还是大二or大三学生,有考研的打算,不妨提前了解一些考研必备的心理战术,有时候并不是你知识学得不好,而是思维…

SQL DML

# DML—添加数据 1.给指定字段添加数据 INSERT INTO表名(字段名1,字段名2,...)VALUES(值1,值2...); 2.给全部字段添加数据 INSERT INTO表名VALUES(值1,值2,...); 3.批量添加数据 INSERT INTO表名(字段名1,字段名2,...)VALUES(值1,值2..…

供应链安全-镜像 Trivy kubesec

开头语 写在前面:如有问题,以你为准, 目前24年应届生,各位大佬轻喷,部分资料与图片来自网络 内容较长,页面右上角目录方便跳转 Dockerfile 文件优化 减少镜像层:一次RUN指令形成新的一层&a…

华纳云:Ubuntu上如何增加Swap分区?

在Ubuntu上增加Swap分区有几种常见的方式,以下是其中两种: 1. 创建Swap文件: 这是一种在已有系统上扩展Swap空间的简便方法。 创建一个Swap文件,假设为2GB(根据需要进行调整): sudo fallocate -…

人工智能图像生成的道德利弊

目录 一、我们应该关注人工智能图像吗?二、利用人工智能增强创造力的积极作用三、版权和剽窃问题四、对就业和劳动力动态的影响五、无意识的偏见和影响六、负责任地前行 人工智能(AI)发展迅速,尤其是近年来。据估计,超…

Flutter 监听前台和后台切换的状态

一 前后台的切换状态监听 混入 WidgetsBindingObserver 这个类,这里提供提供了程序状态的一些监听 二 添加监听和销毁监听 overridevoid initState() {super.initState();//2.页面初始化的时候,添加一个状态的监听者WidgetsBinding.instance.addObserver…

服务器宕机怎么办?怎么预防宕机?

相信不少用户会听到或者在文章中提到电脑宕机或者服务器宕机,不少用户对宕机的意思不太理解。那么服务器宕机是什么意思? 宕机属于计算机的术语,指电脑或者服务器不能正常工作。口语中我们简单的把停掉机器叫做down机,转换为汉字是…

【conda】conda 版本控制和环境迁移/安装conda加速工具mamba /conda常用指令/Anaconda配置

【conda】安装conda加速工具mamba /conda常用指令/Anaconda配置 0. conda 版本控制和环境迁移1. 安装conda加速工具mamba2. conda install version3. [Anaconda 镜像](https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/)使用帮助4. error deal 0. conda 版本控制和环境迁移…

抖去推账号矩阵+无人直播+文案引流系统开发搭建--开源

核心技术 1. AI自动直播: 智能系统通过丰富可定制的文案库, 拥有有料有趣的灵魂。不仅能自动语音讲解内容,还可以在直播中和用户灵活互动。直播中可将团购商品同话术自动上下架。 2. AI剪辑 可一键智能批量成片,也可跟着模板剪…

「PyMuPDF 专栏 」PyMuPDF创建PDF、拆分PDF

文章目录 一、本章前言二、使用PyMuPDF创建PDF文档1、实例代码2、过程详解①. 安装PyMuPDF②. 导入PyMuPDF模块③. 创建一个新的PDF文档④. 添加页面和内容⑤. 保存文档 三、使用PyMuPDF拆分PDF文档1、实例代码2、过程解析①. 导入模块②. 定义函数③. 打开源PDF文件④. 遍历页…

大数据Doris(五十二):SQL函数之数学函数

文章目录 SQL函数之数学函数 一、abs(double a)

owasp top10 | 十大常见漏洞详解

A1 注入漏洞 在 2013、2017 的版本中都是第一名,可见此漏洞的引入是多么的容易,同时也证明此漏洞的危害有多么严重。 攻击方式 利用应用程序弱点,通过恶意字符将恶意代码写入数据库,获取敏感数据或进一步在服务器执行命令。 漏洞原…

windows允许无密码远程设置

在 Windows 系统上启用无密码远程访问涉及一些风险,因为这可能会使您的系统更容易受到未经授权访问的攻击。然而,如果你了解这些风险并且仍然需要这样做,以下是一些步骤来配置 Windows 以允许无密码远程访问: 打开远程桌面: 首先&…

LeetCode 2723. 两个 Promise 对象相加

给定两个 promise 对象 promise1 和 promise2,返回一个新的 promise。promise1 和 promise2 都会被解析为一个数字。返回的 Promise 应该解析为这两个数字的和。 示例 1: 输入: promise1 new Promise(resolve > setTimeout(() > res…

解决hbuilderx打包网址成为5+app,点击返回按钮直接退出app的BUG

直接上代码 <!DOCTYPE html> <html><head><meta charset"UTF-8"><meta name"viewport" content"viewport-fitcover,widthdevice-width,initial-scale1,minimum-scale1,maximum-scale1,user-scalableno" /><ti…

深度学习知识点总结

关于bn层 mean,std 第i个元素就是第i个通道上全部batch张输出特征图所有元素的平均值和方差,所shape就是特征图shape 可学习参数 weight和bias分别对应 γ&#xff0c;β.有bn时cov可以不用bia 在训练过程中,mean和std是统计得到的,然后在迭代过程中动态累加,m*si-1(1-m)*si,m…

基于Java SSM框架实现班级同学录管理系统项目【项目源码】

基于java的SSM框架实现高校校园点餐系统演示 SSM框架 当今流行的“SSM组合框架”是Spring SpringMVC MyBatis的缩写&#xff0c;受到很多的追捧&#xff0c;“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架&#xff0c;通常更简单的数据源。Spring…

洁净室气流流型可视化验证试验 气流流型检测仪

了解和掌握洁净室气流流型的特点和规律是确保洁净室的性能和产品质量的重要基础。在选择气流流型时需要综合考虑各种因素&#xff0c;以达到最佳的空气净化效果。同时&#xff0c;需要定期进行气流流型的检测和验证&#xff0c;以及洁净室的清洁和维护工作&#xff0c;以确保其…