Vue3电商项目实战-购物车模块2【04-头部购物车-商品列表-本地、05-头部购物车-删除操作-本地、06-购物车页面-基础布局】
创始人
2024-05-28 14:09:08
0

文章目录

    • 04-头部购物车-商品列表-本地
    • 05-头部购物车-删除操作-本地
    • 06-购物车页面-基础布局


04-头部购物车-商品列表-本地

目的:根据本地存储的商品获取最新的库存价格和有效状态。

大致步骤:

  • 定义获取最新信息的API
  • 定义修改购物车商品信息的mutations
  • 定义获取购物车列表信息的actions
  • 在头部购物车组件初始化的时候更新列表信息

落的代码:

  • 定义获取最新信息的API src/api/cart.js
import request from '@/utils/request'/*** 获取新的商品信息* @param {String} skuId - 商品SKUID* @returns Promise*/
export const getNewCartGoods = (skuId) => {return request(`/goods/stock/${skuId}`, 'get')
}
定义修改购物车商品信息的mutations src/store/module/cart.js// 修改购物车商品updateCart (state, goods) {// goods中字段有可能不完整,goods有的信息才去修改。// 1. goods中必需又skuId,才能找到对应的商品信息const updateGoods = state.list.find(item => item.skuId === goods.skuId)for (const key in goods) {if (goods[key] !== null && goods[key] !== undefined && goods[key] !== '') {updateGoods[key] = goods[key]}}}
  • 定义获取购物车列表信息的actions src/store/module/cart.js
    // 获取购物车列表findCartList (ctx) {return new Promise((resolve, reject) => {if (ctx.rootState.user.profile.token) {// 登录 TODO} else {// 本地// Promise.all() 可以并列发送多个请求,等所有请求成功,调用then// Promise.race() 可以并列发送多个请求,等最快的请求成功,调用then// 传参事promise数组const promiseArr = ctx.state.list.map(item => {// 返回接口函数的调用return getNewCartGoods(item.skuId)})Promise.all(promiseArr).then(dataArr => {dataArr.forEach((data, i) => {ctx.commit('updateCart', { skuId: ctx.state.list[i].skuId, ...data.result })})resolve()}).catch(e => {reject(e)})}})},
  • 再头部购物车组件初始化的时候更新列表信息 src/components/app-header-cart.vue
  setup () {const store = useStore()store.dispatch('cart/findCartList')}

05-头部购物车-删除操作-本地

目的:完成头部购物车删除操作,支持未登录状态。

大致步骤:

  • 编写mutaions删除购物车商品逻辑
  • 编写actions进行删除操作
  • 在头部购物车进行删除逻辑

落的代码:

  • vuex的mutations和actions代码 src/store/module/cart.js
  mutations: {// ... 省略// 删除购物车商品deleteCart (state, skuId) {const index = state.list.findIndex(item => item.skuId === skuId)state.list.splice(index, 1)}},
  actions: {// ... 省略// 删除购物车商品deleteCart (ctx, skuId) {return new Promise((resolve, reject) => {if (ctx.rootState.user.profile.token) {// 登录 TODO} else {// 本地ctx.commit('deleteCart', skuId)resolve()}})},
  • 头部组件实现删除逻辑 src/components/app-header-cart.vue
+ 购物车无商品不显示弹出层,并且不是在购物车页面
+
+ 绑定点击事件传入skuId
+
  setup () {// 删除const deleteCart = (skuId) => {store.dispatch('cart/deleteCart', skuId).then(() => {Message({ type: 'success', text: '删除成功' })}).catch(e => {Message({ type: 'error', text: '删除失败' })})}return { deleteCart }}

06-购物车页面-基础布局

目的:完成购物车组件基础布局和路由配置与跳转链接。

在这里插入图片描述

大致步骤:

  • 完成头部组件,购物车图标,购物车结算按钮,点击跳转购物车路由。商品点击跳转详情的操作。
  • 配置购物车路由和组件,完成基础布局。

落的代码:

  • 跳转功能 src/components/app-header-cart.vue
    
+      {{$store.getters['cart/validTotal']}}
        
+
  去购物车结算
  • 组件与路由 src/views/cart/index.vue



相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...