前台项目-商品详情页

商品详情页

  • 🍕🍕🍕1.当点击商品图片时,在路由跳转到详情的时候,需要带上对应产品的唯一id,发请求告诉服务器,找到对应的产品信息进行展示,监听滚动行为默认顶部开始。
  • 2.API —请求接口
  • 3.vuex三连环
  • 4.动态展示

一、当点击商品图片时,在路由跳转到详情的时候,需要带上对应产品的唯一id,发请求告诉服务器,找到对应的产品信息进行展示,监听滚动行为默认顶部开始

🥞🥞🥞src\pages\Search\index.vue

 <div class="p-img">//<router-link :to="`/detail/${good.id}`"  ><img :src="good.defaultImg" /></router-link></div>

监听滚动行为默认顶部开始
🐱‍🏍🐱‍🏍🐱‍🏍src\router\index.js

scrollBehavior(to,from,sendPosition){return {x:0,y:0}}

新增详情页接口
🍕🍕🍕src\api\index.js

// 获取详情商品信息的接口 /api/item/{ skuId } 携带skuId参数
export const reqGoodsInfo=(skuId)=>{return requests({methods:"get",url:`/item/${skuId}`})
}

新增detail仓库
🍳🍳🍳src\store\detail

//
import { reqGoodsInfo } from "@/api"
const state = {goodInfo:{}
}
const mutations = {GETGOODINFO(state,goodInfo){state.goodInfo = goodInfo;}
}
const actions = {async getGoodInfo({commit},skuId){let result = await reqGoodsInfo(skuId);if(result.code == 200){commit("GETGOODINFO",result.data)}	}
}
const getters = {// 可以简化数据复杂度// 商品信息路径导航简化categoryView(state){return state.goodInfo.categoryView||{}},//产品信息简化skuInfo(state){return state.goodInfo.skuInfo ||{}},//商品轮播图简化spuSaleAttrList(state){return state.goodInfo.spuSaleAttrList || []}}
export default{state,mutations,actions,getters
}

组件中派发
🍔🍔🍔src\pages\Detail\index.vue

import { mapGetters }from "vuex"
mounted(){this.$store.dispatch("getGoodInfo",this.$route.params.skuId)
}
computed:{...mapGetters(["categoryView","skuInfo","spuSaleAttrList"]);skuImageList(){// 进一步简化复杂度 如果返回的数据没有回来 skuImageList初始置为空数组return this.skuInfo.skuImageList||[]},
}

展示
🍔🍔🍔src\pages\Detail\index.vue

  <!--放大镜效果--><Zoom :skuImageList="skuImageList" /><!-- 小图列表 --><ImageList :skuImageList="skuImageList"  /><!-- 右侧商品属性区域 --><dl  v-for="(spuSaleAttr) in spuSaleAttrList" :key="spuSaleAttr.id"><dt class="title">{{spuSaleAttr.saleAttrName}}</dt><dd changepirce="0" class="active" v-for="(spuValueList) in spuSaleAttr.spuSaleAttrValueList" :key="spuValueList.index">{{spuValueList.saleAttrValueName}}</dd></dl><dl v-for="(spuSaleAttr) in spuSaleAttrList" :key="spuSaleAttr.id"><dt class="title">{{spuSaleAttr.saleAttrName}}</dt><dt changepirce="0" class="active" v-for="(spuValueList) in spuSaleAttr.spuSaleAttrValueList" :key=""></dt></dl>

🍔🍔🍔商品属性值选择切换

  // 商品属性切换事件activeChange(saleAttrValue,arr){arr.forEach(item => {item.isChecked = 0});saleAttrValue.isChecked = 1},

🍔🍔🍔 表单元素修改产品个数

 <input autocomplete="off" class="itxt" v-model="skuNum" @change="changeSkuNum">
changeSkuNum(event){// console.log(event.target.value);// 用户输入进来的文本 先乘以 1 进行判断let value = event.target.value *1;// 不合规则的情况 if(isNaN(value) || value < 1 ){this.skuNum = 1;}else{this.skuNum = parseInt(value)}}

🍳🍳🍳 将产品添加到购物车
src\api\index.js
接口地址: 两个参数

export const reqAddOrUpdateShopCart = (skuId,skuNum)=> requests({url:``,method:'post'
})

详情仓库
src\store\detail\index.js

async addOrUpdateShopCart({commit},{skuId,skuNum}){//加入购物车返回的解构 前台将参数带给服务器/写入数据成功即可let result = await reqAddOrUpdateShopCart(skuId,skuNum);// 此时 服务器返回状态成功即可 仓库不需要存储 仓库要返回一个非空字符串供组件使用 利用try{}catch(){} 成功与失败 if(result.code == 200){return '200'	}else{return Promise.reject(new Error('faile'))	}
}

详情组件派发

async addShopCar(){// 1.发请求 将产品加入到数据库// 2.服务器存储 状态从仓库promise返回  成功 进行路由跳转// 3.失败 进行提示用户
try{await this.$store.dispatch("addOrUpdateShopCart",{skuId:this.$route.params.skuId,skuNum:this.skuNum })// 成功之后进行路由跳转 携带参数 商品信息和数量// 路由参数一般是一些简单的数据 较复杂的数据不推荐路由传递// 展示商品信息 每次选择完商品属性和数量之后只要不关闭浏览器标签 信息一直存在 会话存储较合适// 会话存储和本地存储 都不可存储对象sessionStorage.setItem("SKUINFO",JSON.stringify(this.skuInfo))this.$router.push({name:'addcartsuccess',query:{skuNum:this.skuNum}})
}
}catch(error){alert('服务器有点忙! ')
}

接收 展示
src\pages\AddCartSuccess\index.vue

computed:{skuInfo(){return JSON.parse(sessionStorage.getItem("SKUINFO"))	}
}

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

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

相关文章

屏幕截图编辑工具Snagit中文

Snagit是一款优秀的屏幕、文本和视频捕获与转换程序。它能够捕获屏幕、窗口、客户区窗口、最后一个激活的窗口或用鼠标定义的区域&#xff0c;并支持BMP、PCX、TIF、GIF或JPEG格式的保存。Snagit还具有自动缩放、颜色减少、单色转换、抖动等功能&#xff0c;并能将捕获的图像转…

[windows]一种判断exe是32位还是64位程序简单方法

不用运行&#xff0c;直接查看 exe 文件的兼容性属性。 如果是 32 位的程序&#xff0c;“简化的颜色模式”和“用 640x480 屏幕分辨率运行”是可以勾选的&#xff0c;且兼容模式最低可以调到 Windows 95。 而 64 位的程序&#xff0c;“简化的颜色模式”和“用 640 x 480 屏…

热过载继电器 WJJL1-05/2X AC220V 0.5A-5A 导轨安装 JOSEF约瑟

系列型号 WJJL1-10D/1过载保护器&#xff1b;WJJL1-50D/1过载保护器&#xff1b; WJJL1-100D/1过载保护器&#xff1b;WJJL1-300D/1过载保护器&#xff1b; WJJL1-600D/1过载保护器&#xff1b;WJJL1-1000D/1过载保护器&#xff1b; WJJL1-2000D/1过载保护器&#xff1b;WJ…

❤ Vue3 完整项目太白搭建 Vue3+Pinia+Vant3/ElementPlus+typerscript(一)yarn 版本控制 ltb (太白)

❤ 项目搭建 一、项目信息 Vue3 完整项目搭建 Vue3PiniaVant3/ElementPlustyperscript&#xff08;一&#xff09;yarn 版本控制 项目地址&#xff1a; 二、项目搭建 &#xff08;1&#xff09;创建项目 yarn create vite <ProjectName> --template vueyarn install …

FPGA开发设计

一、概述 FPGA是可编程逻辑器件的一种&#xff0c;本质上是一种高密度可编程逻辑器件。 FPGA的灵活性高、开发周期短、并行性高、具备可重构特性&#xff0c;是一种广泛应用的半定制电路。 FPGA的原理 采用基于SRAM工艺的查位表结构&#xff08;LUT&#xff09;&#xff0c;…

大创项目推荐 深度学习猫狗分类 - python opencv cnn

文章目录 0 前言1 课题背景2 使用CNN进行猫狗分类3 数据集处理4 神经网络的编写5 Tensorflow计算图的构建6 模型的训练和测试7 预测效果8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习猫狗分类 ** 该项目较为新颖&a…

C#~Winform取消窗体最大化最小化按钮

目录 取消最大化-false取消最小化-false效果 取消最大化-false 取消最小化-false 效果

彻底解决charles抓包https乱码的问题

最近做js逆向&#xff0c;听说charles比浏览器抓包更好用&#xff0c;结果发现全是乱码&#xff0c;根本没法用。 然后查询网上水文&#xff1a;全部都是装证书&#xff0c;根本没用&#xff01; 最后终于找到解决办法&#xff0c;在这里记录一下&#xff1a; 乱码的根本原因…

[Linux]查看虚拟内存占用情况

概念 虚拟内存是计算机系统内存管理的一种技术&#xff0c;它允许程序拥有超过系统物理内存大小的可用内存空间。虚拟内存的存在&#xff0c;使得应用程序认为它拥有连续的可用内存&#xff08;一个连续完整的地址空间&#xff09;&#xff0c;而实际上&#xff0c;它通常是被…

Cmake 中的list介绍

这个链接非常好&#xff0c;都有例子。 https://www.jianshu.com/p/89fb01752d6f

61. 旋转链表 86. 分隔链表 |面试经典题

题目&#xff1a;给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 题目链接&#xff1a;61. 旋转链表 截断拼接即可 class Solution {public ListNode rotateRight(ListNode head, int k) {if(headnull||k0){return head;}List…

AnyText多语言文字生成与编辑模型——让AI绘图自由添加精美文字

随着AIGC的爆火,图片生成技术得到飞速发展,当前AI生成的图片已达到真假难辨的高保真度。例如stable diffusion与midjourney为代表的文生图大模型。不过,当合成图片中出现文字内容时,现存的AI技术依然无法驾驭文字内容。因此,modescope提出了一种新型的文字生成方法,此方法…

LLK的2023年度总结

文章目录 一月二月三月四月五月六月七月八月九月十月十一月十二月 一月 此时的俺还在沉浸在蓝桥杯的练习和女朋友的甜蜜期&#xff0c;感觉没啥大长进。然后荣幸地知道了自己C语言实验因为某种非技术原因而挂科了。此时自己地目标由保研自然地转换到考研比赛就业的方向了。接着…

矩阵的秩-

一、定义、理解 非零子式的最高阶数。 如何理解&#xff1f;什么叫做非零子式的最高阶数&#xff1f;&#xff1f;&#xff1f; 举个例子&#xff1a;有一个5阶矩阵 首先什么叫子式&#xff1f; 例如2阶子式就是&#xff0c;任取某两行某两列组成的行列式&#xff0c;就叫…

书生·浦语大模型实战营第三次课堂笔记

LLM 的局限性 知识时效性受限: 如何让LLM能够获取最新的知识 专业能力有限: 如何打造垂域大模型 定制化成本高: 如何打造个人专属的LLM应用 RAG:检索增强生成&#xff0c; 核心思想&#xff1a;给大模型外挂一个知识库&#xff0c;对于用户的提问&#xff0c;会首先从知识库中…

零基础入门,轻松制作仿真翻页电子书

​随着科技的进步&#xff0c;电子书已经成为越来越多人的选择。与传统纸质书籍相比&#xff0c;电子书具有便携性、可搜索性、可分享性等优势。然而&#xff0c;制作电子书并非易事。许多人都因为缺乏相关知识和技能而望而却步。我给大家提供了一些实用的方法哦&#xff0c;可…

字体包大小缩小的软件

Fontmin - 字体子集化方案https://ecomfe.github.io/fontmin/#app

人源化抗体服务的优势-卡梅德生物

人源化抗体定制服务的优势 随着生物技术的飞速发展&#xff0c;抗体药物已成为生物医药领域的重要支柱。而在众多抗体药物中&#xff0c;人源化抗体因其独特的优势而备受瞩目。其中&#xff0c;人源化抗体定制服务更是为科研和制药领域带来了诸多便利。 首先&#xff0c;人源化…

1.12 ECS

什么是Unity DOTS? Unity面向数据的技术栈(data oriented tech stack, DOTS)包括以下主要部分&#xff1a; Entity Component System 简记为ECS&#xff0c;提供了默认情况下写出高性能的代码的方法C# Job System 提供了以并行的方式在多核CPU上运行游戏代码的方法Burst com…

openGauss学习笔记-195 openGauss 数据库运维-常见故障定位案例-分析查询语句运行状态

文章目录 openGauss学习笔记-195 openGauss 数据库运维-常见故障定位案例-分析查询语句运行状态195.1 分析查询语句运行状态195.1.1 问题现象195.1.2 处理办法 openGauss学习笔记-195 openGauss 数据库运维-常见故障定位案例-分析查询语句运行状态 195.1 分析查询语句运行状态…