uni-app —— 小程序加入购物车实现过程

news2025/7/20 20:54:53

文章目录

  • 前言
  • 一、示意图
  • 二、整体实现思路
  • 实现过程
    • 1.加入购物车
    • 2.获取当前用户购物车信息
    • 3.解决数据获取不及时的问题
  • 总结


前言

前文已经讲解了如何实现商品规格的选择,那么接下来就应该将用户选中的商品加入购物车啦!那么如何实现呢?请看下文!


一、示意图

 

二、整体实现思路

  • 首先你得知道购物详情页面是你选中的那条数据
  • 那么接下来就是“加入购物车”的点击事件了,这个事件需要调用后端给我们提供的 “加入购物车”接口,我们的增删改查都要调用相应的接口完成相应的动作。
  • 此时我们的加入购物车,数据存在了数据库里。但是!!!数据存放在数据库中不行对吧,我们需要在购物车页面把数据库的数据拿出来。那么,这一步也需要调用“获取当前用户购物车列表”的接口(请注意!!是当前用户,那就说明在加入购物车时应该判断用户是否登录!)拿到接口之后,就是把当前用户购物车的数据渲染在页面上啦!

三、实现过程

1.加入购物车

1.生成调用加入购物车接口的方法

// 引入request请求方法
import request from '../utils/request.js';

// 加入购物车的方法
export const addincar = ({
	shop_id,
	skus_type,
	num
}) => {
	return request({
		url: '/cart',
		method: 'POST',
		header: {
			token: true
		},
		data: {
			shop_id,
			skus_type,
			num
		}
	})
}

2.加入购物车时调用相应接口,将数据添加到数据库中

// 加入购物车的点击事件
			Addshopcar() {
				console.log('加入购物车操作')
				let skus_type = this.detailList.sku_type
				let shop_id = skus_type === 0 ? this.detailList.id : this.detailList.goodsSkus[this.findValue].id
				let num = this.value
				addincar({
					skus_type,
					shop_id,
					num
				}).then((response) => {
					console.log('成功获取书!')
					console.log(response);
					if (response.msg == "ok") {
						uni.$emit('updateshopcar');
						uni.switchTab({
							url: '../../pages/cart/cart'
						})
					}
				})
			},

2.获取当前用户购物车信息

1.生成获取当前用户购物车信息的方法

// 获取当前用户的购物车列表信息
export const getShopcarinfo = () => {
	return request({
		url: '/cart',
		header: {
			token: true
		}
	})
}

2.调用获取当前用户购物车信息的方法

// 获取当前用户购物车信息列表
			Shopcarinfo() {
				getShopcarinfo().then((response) => {
					console.log(response, '购物车列表')
					this.shopcarList = response.data;
					this.$store.dispatch('cart/updateshopList', this.shopcarList);
				})
			}

3.在vuex中进行数据的增删改查

// 获取当前用户购物车列表信息
		updateshopList(context, value) {
			console.log(value);
			context.commit('UPDATESHOPLIST', value);
		},
		// 退出登录时清空购物车数据
		resetShopcar(context) {
			context.commit('RESETSHOPCAR');
		}
	// 获取当前用户的购物车列表
		UPDATESHOPLIST(state, value) {
			state.list = value || [];
			uni.$on('updateshopcar')
			Badge.TabBarBadge(state.list.length)
		},

3.解决数据获取不及时的问题

这里的数据获取不及时的问题,指的是你明明点击了加入购物车,页面却没有相应的渲染数据,这里可以用uni-app中的触发全局的自定义事件,解决这个问题

3.1 uni.$emit(eventName,OBJECT)

触发全局的自定义事件,附加参数都会传给监听器回调函数。

属性类型描述
eventNameString事件名
OBJECTObject触发事件携带的附加参数

3.2 uni.$on(eventName,callback)

监听全局的自定义事件,事件由 uni.$emit 触发,回调函数会接收事件触发函数的传入参数。

属性类型描述
eventNameString事件名
callbackFunction事件的回调函数


总结

以上就是今天所要分享的内容,最后依旧诚挚祝福屏幕前的你健康快乐、平安喜乐!

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

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

相关文章

[附源码]计算机毕业设计JAVA儒家文化网站

[附源码]计算机毕业设计JAVA儒家文化网站 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis M…

FilterListenerAjax的介绍

目录 一、Filter 1、Filter概述 2、过滤器链 二、Listener 三、Ajax 1、基本介绍 2、快速入门案例 3、axios 4、JSON 一、Filter 1、Filter概述 ▶ 过滤器 Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请…

Centos--基于Jdk1.8环境安装+卸载Jenkins

基础准备 本人选择的安装的环境基于jdk1.8 操作系统:Centos7.9 java: 1.8.0_262 检查是否有旧版本 $rpm -ql jenkins 如果有老版本可以卸载后,再执行后面的安装步骤 卸载 jenkins $rpm -e jenkins —删除遗留文件: $find / -iname jenkins | xa…

【Lilishop商城】No2-4.确定软件架构搭建三(本篇包括ES检索)

仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在: 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇只介绍重点架构逻辑,具体编写看源代码就行,读起来也不复杂~ 谨慎&#xff…

windows文本绘制 TextOut、DrawText、CreateFont、SetTextColor、SetBkColor、SetBkMode

文本绘制 TextOut-将文字绘制在指定坐标位置 DrawText-在矩形区域绘制字符串 int DrawText(HDC hdc, //DC句柄LPCSTR lpString, //字符串int nCount, //字符串长度LPRECT lpRect, //绘制文字的矩形框UINT uFormat //绘制的方式,重点,花样繁多的关键点 );绘制文字样…

持续集成和上传源码

1.测试左移,测试右移 2.持续集成 是指通过自动化的方式,频繁多次将代码集成到主干。 快速发现错误 每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。 防止分支大幅偏离主干 如果不是经常集成&…

nginx源码分析--双端列表

1.基本数据结构 struct ngx_queue_s {ngx_queue_t *prev;ngx_queue_t *next; };结构成员: ngx_queue_t *prev;前驱指针 ngx_queue_t *next;后继指针 2.操作函数--头结点 2.1基本函数 define ngx_queue_init(q) \(…

七牛云 vue 图片上传简单解说,js 上传文件图片

七牛云 vue 图片上传简单解说,js 上传文件图片 一、七牛云简介 首次使用七牛云存储进行项目的图片存储,整了一上午才整明白,这些官方的教程把明白人也给说糊涂了,文档很不规范。 七牛云有免费的使用额度,https://ww…

[附源码]SSM计算机毕业设计汽车租赁管理系统-JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Go学习之旅:包、变量和函数(DAY 1)

文章目录前引包、变量和函数1、包的概念和所用2、导出名或者导出函数3.1、函数参数声明方式(一)3.2、函数参数声明方式(二)4、函数返回值支持多值返回5、函数命名返回值6、变量声明7、变量的基础类型8、变量的默认值(零…

pytorch案例代码-3

双向循环神经网络 双向循环神经网络在RNN/LSTM/GRU里都有。比如RNN cell,只是把h0和x1传入做线性变换产生h1继续传入同一个cell做线性变换,线性变换的W和b共享,沿着这个方向就把所有隐层和最后的输出算出来了。 那么其中的每个结点&#xff0…

android-apk解包打包

title: android-apk解包打包 categories: Android tags: [android, 加壳] date: 2022-09-28 10:29:51 comments: false mathjax: true toc: true android-apk解包打包, 以下所有操作都需要在配置好 java 环境下进行 前篇 android apk解包和打包 - https://blog.csdn.net/u0114…

(十五)Spring之面向切面编程AOP

文章目录基础环境AOP介绍AOP的七大术语切点表达式Spring的AOP的使用环境准备基于AspectJ的AOP注解式开发通知类型前置通知Before后置通知AfterReturning环绕通知Around异常通知AfterThrowing最终通知After关于JoinPoint切面的先后顺序通用切点表达式全注解式开发AOP基于XML配置…

9、前端笔记-CSS-CSS三大特性

三大特性:层叠性、继承性、优先级 1、层叠性(覆盖性) 给相同的选择器设置相同的样式,此时一个样式会覆盖(层叠)其他冲突的样式。 层叠性原则: 同一选择器,样式冲突,遵…

【SpringBoot】MVC配置解决跨域但仍然存在跨域

文章目录1. 跨域问题出现与解决1. 跨域问题出现与解决 检查SpringBoot中的MVC配置。 public void addCorsMappings(CorsRegistry registry) {//允许跨域访问资源定义registry.addMapping("/**")//(只允许本地的指定端口访问)允许所有.allowedOrigins("*")…

数据结构之线性表中的单链表【详解】

文章目录前言:一、单链表1.单链表和顺序表的优缺点2.单链表的概念和学习3.单链表的各个接口的实现(详解每一步)3.1.先铺垫一下大致的思路3.2.然后这边我们看一下我们大致要实现的函数有哪些3.3.接下来我们就开始实现这些代码,并且…

用信号量实现进程同步与互斥(含代码分析)

信号量简单的来说就是一个变量,代表着系统中互斥资源的数量,通常用原语来实现对信号量机制的操作。 一对原语:wait(S)也称为P操作,singnal(S)也称为V操作。S表示信号量 对于wait原语本身的内部逻辑代码如下(这里以一…

黑苹果外接显示器最优解决方案

黑苹果无法外接显示器 黑苹果外接显示器解决方案 先给解决方案 电脑端 > 安装 PC端 Duet Display买个二手电视盒子40块钱左右,还带电源电视盒子 > 安装安卓端 Duet Display(U盘安装就行)电视盒子 > 用鼠标开启开发者模式双头USB&…

SpringBoot SpringBoot 原理篇 1 自动配置 1.12 bean 的加载控制【注解式】

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇1 自动配置1.12 bean 的加载控制【注解式】1.12.1 问题引入1.12.2 bean的加载…

【JVM技术专题】「原理专题」全流程分析Java对象的创建过程及内存布局

前言概要 对应过程则是:对象创建、对象内存布局、对象访问定位的三个过程。 对象的创建过程 对象的创建方式 java中对象的创建方式有很多种,常见的是通过new关键字和反射这两种方式来创建。除此之外,还有clone、反序列化等方式创建。 通过n…